from tkinter import *
root=Tk()
root.geometry('450x500')
root.config(bg='#deeffa')
def follow(parent):
root.bind('\<Motion\>',lambda event,parent=parent:center_mouser(event,parent))
parent.but.config(command=stop)
def stop():
root.unbind('\<Motion\>')
def center_mouser(event,parent):
root.config(cursor="none")
parent.but.place(x=event.x,y=event.y, anchor='center')
class moving_but():
def __init__(self,but=None,val=0):
self.val=val
self.but=Button(borderwidth=1,text=str(self.val),command=lambda parent=self:follow(parent))
self.but.pack()
i=moving_but(val=10)
root.mainloop()
字符串
因此,我试图使一个按钮,遵循光标的中心,但我发现,tkinte不允许这一点,并会使按钮之间的光标和左上角 Flink 。如果你做事件。x-50例如,该计划的工作完美,但显然删除按钮的目的。我该如何解决这个问题?
2条答案
按热度按时间wfypjpf41#
我稍微改变了回调函数,并使用
.winfo_pointerx()/.winfo_pointery()
函数来计算位置:字符串
创建此应用程序:
的数据
f0brbegy2#
由于绑定在
root
上,它将被其子窗口继承。也就是说,当鼠标在按钮内移动时,绑定回调将被触发,并且事件(x,y)将相对于按钮,而不是根窗口。只有当事件由根窗口触发时,才应移动按钮:
字符串