将字段内的按钮拖动到设置的边界



我已经好几年没有寻求帮助了。我正在一个框架内创建许多拖放按钮。当按钮松开时,它会触发,工作正常。我在button_drag((中设置了一个边界。我遇到的问题是,如果按钮一直拖到边界,按钮就无法触发。当然,代码胜过千言万语,所以我编了一个小代码,展示了我只使用一个按钮所采取的方法。我试着把按钮放在它自己的画布里,并摆弄鼠标信息。我希望有人能帮忙。感谢

root = Tk()
root.geometry("300x300")
frame = Frame(root,bg="grey40")
frame.config(width=200,height = 200)
frame.pack()
frame.place(x=150, y=150, anchor=CENTER)
def button_push():
print("Button Pressed")
def button_drag(event):
global Yevent
x = event.x + event.widget.winfo_x()
y = event.y + event.widget.winfo_y()
Yevent = y
if y > 180:
y = 180
event.widget.place(x=x, y=y, anchor="s")
button = Button(frame, text="button1", font='TkDefaultFont', fg="slate grey",command=lambda: button_push())
button.place(x=50,y=50)
button.bind("<B1-Motion>",button_drag)
root.mainloop()

按钮的正常行为是,如果在光标不在按钮上时释放鼠标按钮,则不调用其命令。这允许用户在按下按钮后改变主意时防止按钮被点击。

如果您希望在用户释放按钮时无论光标在哪里都能触发按钮,则必须添加自己的绑定。

您将希望您的绑定返回字符串";中断";这样默认行为就不会导致按钮触发。

button.bind("<ButtonRelease-1>", lambda event: event.widget.invoke() and "break")

最新更新