在 Canvas 中移动鼠标并显示以相同方式移动但在另一个 canvas 中的点

Move the mouse in a Canvas and display a point moving in the same way BUT in another canvas

我正在创建一个带有两个 canvas 的 Tkinter (Python3) 接口。我想将鼠标移到一个 canvas 上并以相同的方式(与鼠标一样)显示一个点,但在另一个画布中。

我已经试过了:

    def motion(self,event):
            x, y = event.x, event.y
            self.dot=self.canvas.create_oval((x,y), (x,y), width=2, outline='red', fill='red')

问题是我可以显示点,但这个点会保留。我也试过在创建点后删除它,但这样它就不会出现:

    def motion(self,event):
            x, y = event.x, event.y
            self.dot=self.canvas.create_oval((x,y), (x,y), width=2, outline='red', fill='red')
            self.canvas.delete(self.dot)

有人可以帮助我吗? 非常感谢

您不必在每次移动鼠标时都创建一个新点。创建点一次并使用 canvas 方法 coords(<item>, *new_coords) 移动它。 <item>create_oval(整数)返回的 canvas 项目 ID。

这是一个例子:

import tkinter as tk

def on_move(event):
    x, y = event.x, event.y
    canvas2.coords(dot, x - 5, y - 5, x + 5, y + 5)

root = tk.Tk()

canvas1 = tk.Canvas(root)
canvas2 = tk.Canvas(root, bg='white')

canvas1.pack(side='left')
canvas2.pack(side='right')
dot = canvas2.create_oval(-10, -10, 0, 0, fill='black')

canvas1.bind('<Motion>', on_move)

root.mainloop()