qq_39414460 2021-07-12 09:50 采纳率: 25%
浏览 27
已采纳

使用tkinter如何实现线段的上下来回移动

求解,需要实现红色线段上下来回平移,该如何更新坐标呐
img

  • 写回答

1条回答 默认 最新

  • Soda Wang 2021-07-12 10:33
    关注

    可以参考下这段代码:

    import tkinter as tk
    import time
    
    class Alien(object):
        def __init__(self, canvas, *args, **kwargs):
            self.canvas = canvas
            self.id = canvas.create_oval(*args, **kwargs)
            self.vx = 5
            self.vy = 0
    
        def move(self):
            x1, y1, x2, y2 = self.canvas.bbox(self.id)
            if x2 > 400:
                self.vx = -5
            if x1 < 0:
                self.vx = 5
            self.canvas.move(self.id, self.vx, self.vy)
    
    class App(object):
        def __init__(self, master, **kwargs):
            self.master = master
            self.canvas = tk.Canvas(self.master, width=400, height=400)
            self.canvas.pack()
            self.aliens = [
                Alien(self.canvas, 20, 260, 120, 360,
                      outline='white', fill='blue'),
                Alien(self.canvas, 2, 2, 40, 40, outline='white', fill='red'),
            ]
            self.canvas.pack()
            self.master.after(0, self.animation)
    
        def animation(self):
            for alien in self.aliens:
                alien.move()
            self.master.after(12, self.animation)
    
    root = tk.Tk()
    app = App(root)
    root.mainloop()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。
  • ¥15 stm32的can接口不能收发数据
  • ¥15 目标检测算法移植到arm开发板
  • ¥15 利用JD51设计温度报警系统