Tkinter初始光标位置和Enter按按钮

时间:2015-01-15 16:51:41

标签: python tkinter

我正在创建一个类似于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()

1 个答案:

答案 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