在 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()
我正在创建一个带有两个 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()