在Tkinter中,可以使用after()
方法来实现同时但异步移动两个小部件。after()
方法用于在指定的时间之后调用一个函数。
下面是一个示例代码,演示如何同时但异步移动两个Tkinter小部件:
import tkinter as tk
def move_widget1():
x1, y1 = canvas.coords(widget1)
canvas.coords(widget1, x1 + 5, y1 + 5) # 移动widget1的坐标
root.after(100, move_widget1) # 100毫秒后再次调用move_widget1函数
def move_widget2():
x2, y2 = canvas.coords(widget2)
canvas.coords(widget2, x2 - 5, y2 - 5) # 移动widget2的坐标
root.after(100, move_widget2) # 100毫秒后再次调用move_widget2函数
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
widget1 = canvas.create_oval(50, 50, 100, 100, fill="red")
widget2 = canvas.create_oval(150, 150, 200, 200, fill="blue")
move_widget1() # 启动移动widget1的函数
move_widget2() # 启动移动widget2的函数
root.mainloop()
在这个例子中,我们创建了一个Tkinter窗口,并在窗口中创建了两个圆形小部件(widget1和widget2)。move_widget1()
和move_widget2()
函数分别用于移动widget1和widget2的坐标。使用canvas.coords()
方法可以获取或设置小部件的坐标。
在每次移动之后,我们使用after()
方法在100毫秒后再次调用相应的移动函数,实现了异步移动。通过适当调整after()
方法的延迟时间,可以控制移动的速度。
请注意,这只是一个简单的示例,用于演示如何同时但异步移动两个小部件。实际应用中,您可能需要根据具体的需求和场景进行适当的修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云