我正在创建一个类似于tkMessageBox的框。我希望盒子有两个简单的行为。首先,我希望在窗口打开时自动选择按钮,然后我希望能够按Enter键按下按钮。听起来很简单,我意识到我可以使用tkinterMessageBox来做同样的事情,但这是一个垫脚石,我想知道将来如何做其他事情。
下面窗口的当前行为是它打开,如果我按Tab键它会选择按钮,但是我只能用鼠标按下按钮。同样,所需的功能是立即选择按钮,并能够使用回车键按下按钮。
import Tkinter, tkMessageBox
from Tkinter import *
def closewindow():
Messagebox.destroy()
Messagebox=Tk()
l3=Label( Messagebox, text="This is your preview! Align camera then press ESC")
b3=Button(Messagebox, text="Okay", command=closewindow)
l3.grid(row=1,column=1)
b3.grid(row=2,column=1)
Messagebox.mainloop()
答案 0 :(得分:2)
实际上只需两行代码即可实现:
b3.bind('<Return>', lambda _: closewindow())
b3.focus_set()
第一个将按钮绑定到 Enter 键,第二个按钮将应用程序的焦点设置在按钮上。
请注意,我必须使用带有绑定的lambda来处理将发送到回调的事件对象。但是,您可以更改closewindow
的定义来处理此问题:
def closewindow(event=None):
Messagebox.destroy()
现在你可以这样做:
b3.bind('<Return>', closewindow)
有关Tkinter中绑定的更多信息,请参阅Effbot上的Events and Bindings。