python界面化软件

查看 83|回复 9
作者:jackson123456   
今天给我初一小老弟讲数学题讲到动点问题  两个点 来回在数轴上面移动他就是不[Python] 纯文本查看 复制代码import tkinter as tk
class MovingPointsApp :
    def __init__(self, root) :
        self.root = root
        self.root.title("动点在数轴上移动")
        # 设置画布大小,确保可以显示正负20个刻度
        self.canvas_width = 2100  # 设置画布宽度为2100
        self.canvas_height = 400  # 减小画布高度
        self.canvas = tk.Canvas(root, width=self.canvas_width, height=self.canvas_height)
        self.canvas.pack()
        # 设置数轴起始和结束位置
        self.left_offset = 100  # 减小左侧留空以适应更多刻度
        self.right_offset = 100  # 减小右侧留空以适应更多刻度
        self.axis_start = self.left_offset
        self.axis_end = self.canvas_width - self.right_offset
        
        # 计算刻度间距和零点位置
        self.tick_spacing = 45  # 调整刻度间距以适应更多刻度
        self.zero_x = (self.axis_start + self.axis_end) // 2  # 零点位置在中间
        # 绘制数轴
        self.canvas.create_line(self.axis_start, self.canvas_height // 2, self.axis_end, self.canvas_height // 2,
                                arrow=tk.LAST, width=3)  # 增加数轴线宽
        # 绘制数轴上的刻度
        self.draw_ticks()
        # 初始化动点的坐标
        self.point1_x = self.zero_x + (3 * self.tick_spacing)  # 初始点A在位置3
        self.point2_x = self.zero_x + (5 * self.tick_spacing)  # 初始点B在位置5
        # 绘制两个动点
        self.point1 = self.canvas.create_oval(self.point1_x - 5, self.canvas_height // 2 - 5, self.point1_x + 5,
                                              self.canvas_height // 2 + 5, fill="red")
        self.point2 = self.canvas.create_oval(self.point2_x - 5, self.canvas_height // 2 - 5, self.point2_x + 5,
                                              self.canvas_height // 2 + 5, fill="blue")
        # 动点的初始速度和方向
        self.speed1 = 2
        self.speed2 = 3
        self.direction1 = 1  # 1 为向右移动,-1 为向左移动
        self.direction2 = 1  # 1 为向右移动,-1 为向左移动
        self.running = False  # 动画是否正在运行
        # 创建输入框和按钮
        self.create_controls()
    def draw_ticks(self) :
        """绘制数轴上的刻度,负数和正数各20个刻度"""
        for i in range(-20, 21) :  # 修改范围为-20到20
            # 计算刻度的x坐标:从零点开始,向左为负,向右为正
            x = self.zero_x + (i * self.tick_spacing)
            
            if x >= self.axis_start and x 懂 我就用python写了一个界面化图形 从而实现一条数轴 两个点 来回移动 用这东西给他讲题他可算开窍了!!!!!!!!!

刻度, 数轴

cfl300   

初一的题目就那么难了吗
affffffff   

有点好玩啊
my0511xiaobai   

有点意思啊,学习了
crystalZ   

加油!再适配下高年级的曲线上点的运动
Orima   

牛,学了数学知识,又领会编程的奥妙。。。。
baliao   

感谢分享,很不错,如果需要某一点到达某处回返回(碰撞返回),需要暂停,改方向吧
wangshaoshe   

有意思,感谢分享
pizazzboy   

有意思,感谢分享
52soft   

这个是题目吧
您需要登录后才可以回帖 登录 | 立即注册

返回顶部