Tkinter - 创建一个跟随鼠标位置的正方形

时间:2015-06-10 06:15:13

标签: user-interface python-3.x tkinter tkinter-canvas

我必须在画布上的指针周围创建一个正方形。当我移动它时,我希望那个方块跟随我的指针。

from tkinter import *
root = Tk()
f = Frame(root)
f.pack()
c = Canvas(f,bg = "black")

while root:
    x = c.winfo_pointerx()
    y = c.winfo_pointery()
    c.create_rectangle(x,y,(x+10),(y+10),fill = "red")
    root.mainloop()

root.mainloop()

现在,当我运行此时,矩形不会加载。

1 个答案:

答案 0 :(得分:2)

你的方法不起作用,因为一旦你调用mainloop,它就会等待窗口关闭,所以它永远不会超过循环的第一次迭代。如果您从循环中删除mainloop,它将永远不会在(无限)循环后到达mainloop

执行此操作的正确方法是使用callback events。此外,你应该move the rectangle,而不是创建一堆新的。尝试这样的事情:

def callback(event):
    x, y = event.x, event.y
    c.coords(rect, x - 10, y - 10, x + 10, y + 10)

root = Tk()
c = Canvas(root)
rect = c.create_rectangle(0, 0, 0, 0)
c.bind('<Motion>', callback)
c.pack()
root.mainloop()