在tkinter中关闭消息框后按下按钮
在绑定到按钮 DROP
的功能中,我有:
def on_click_button_drop(element):
# ...
if not db_name:
print("db name empty")
messagebox.showinfo("", "db name empty")
return
# ...
button_drop.bind("<Button-1>", on_click_button_drop)
但是在按下 messagebox.showinfo
中的 OK
之后,按钮仍然保持按下的状态...
完整的测试代码
from tkinter import *
import tkinter.messagebox as messagebox
root = Tk()
root.grid()
def on_click_button_drop(element):
db_name = entry_db_name.get()
if not db_name:
# print("db name empty")
messagebox.showinfo("", "db name empty")
return
pass
label_db_name = Label(root, text="db name")
entry_db_name = Entry(root, width=20)
button_drop = Button(root, text="DROP", width=10)
label_db_name.pack()
entry_db_name.pack()
button_drop.pack()
button_drop.bind("<Button-1>", on_click_button_drop)
root.mainloop()
要怎么做才能让按钮恢复到未按下的状态呢?
1 个回答
4
为了达到你想要的效果,使用 <ButtonRelease-1>
事件,而不是 <Button-1>
事件:
button_drop.bind("<ButtonRelease-1>", on_click_button_drop)
另外,你的 return
和 pass
语句是多余的,这样就够了:
def on_click_button_drop(element):
db_name = entry_db_name.get()
if not db_name:
# print("db name empty")
messagebox.showinfo("", "db name empty")