Tkinter 初始光标位置和输入按钮

Tkinter Initial Cursor position and Enter to press button

我正在制作一个类似于 tkMessageBox 的框。我希望盒子具有两种简单的行为。首先,我希望按钮在 window 打开时自动被 selected,其次,我希望能够按回车键来按下按钮。听起来很简单,我意识到我可以使用 tkinterMessageBox 来做同样的事情,但这是一个垫脚石,我想知道将来如何做其他事情。

下面 window 的当前行为是它打开,如果我按 Tab 它将 select 按钮,但我只能用鼠标按下按钮。同样,所需的功能是让按钮 select 立即编辑并能够使用回车键按下按钮。

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()

您实际上只需两行代码即可完成此操作:

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