如何同时但异步地移动两个 tkinter 小部件?
How can I move two tkinter widgets simultaneously but asynchronous?
问题很简单。有什么方法可以 canvas.move 图像 A 到右侧,同时 canvas.move 图像 B 到左侧?
我之前通过使用多重处理来实现这一点 运行 在其上分层的多个画布,但这是我编造的一个非常有效的解决方法。
有什么official/better方法可以做到这一点吗?任何建议都有帮助。
您不需要做任何特别的事情。只需同时为两个对象调用 move
方法即可。屏幕更新时,两者会同时更新。
例如,以下代码会在您每次按下键盘上的 space 键时将每个图像移动 5 个像素:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, background="black", width=400, height=400)
canvas.pack(fill="both", expand=True)
image_a = tk.PhotoImage(width=50, height=50)
image_b = tk.PhotoImage(width=50, height=50)
image_a.put(("#ff0000",), (0, 0, 49, 49))
image_b.put(("#00ff00",), (0, 0, 49, 49))
canvas.create_image(175, 200, image=image_a, tags=("image_a",))
canvas.create_image(225, 200, image=image_b, tags=("image_b",))
def sync_move(event):
canvas = event.widget
canvas.move("image_a", 5, 0)
canvas.move("image_b", -5, 0)
canvas.bind("<space>", sync_move)
canvas.focus_set()
root.mainloop()
问题很简单。有什么方法可以 canvas.move 图像 A 到右侧,同时 canvas.move 图像 B 到左侧?
我之前通过使用多重处理来实现这一点 运行 在其上分层的多个画布,但这是我编造的一个非常有效的解决方法。
有什么official/better方法可以做到这一点吗?任何建议都有帮助。
您不需要做任何特别的事情。只需同时为两个对象调用 move
方法即可。屏幕更新时,两者会同时更新。
例如,以下代码会在您每次按下键盘上的 space 键时将每个图像移动 5 个像素:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, background="black", width=400, height=400)
canvas.pack(fill="both", expand=True)
image_a = tk.PhotoImage(width=50, height=50)
image_b = tk.PhotoImage(width=50, height=50)
image_a.put(("#ff0000",), (0, 0, 49, 49))
image_b.put(("#00ff00",), (0, 0, 49, 49))
canvas.create_image(175, 200, image=image_a, tags=("image_a",))
canvas.create_image(225, 200, image=image_b, tags=("image_b",))
def sync_move(event):
canvas = event.widget
canvas.move("image_a", 5, 0)
canvas.move("image_b", -5, 0)
canvas.bind("<space>", sync_move)
canvas.focus_set()
root.mainloop()