tkinter:将 Return 键绑定到确定按钮——但不绑定到文本小部件
tkinter: bind Return key to the OK button -- but not to the Text widget
使用 tkinter/ttk (8.5+)
,在自定义对话框中,我想将 Return
键绑定到 OK
按钮。
所以我使用标准指令:
self.window.bind("<Return>", self.on_ok)
问题是,在此自定义对话框中还有一个(多行)Text
小部件。一旦 Return
键绑定到 OK
按钮,就无法在不终止对话框的情况下在 Text
小部件中键入 Enter
!输入 Return
现在等同于按 OK
.
我在 Firefox 中检查过,当 Text
控件获得焦点时,按 Return
不会触发确定按钮。它只是输入一个换行符。
如果 OK
按钮有焦点,则按 Return
激活按钮。
有没有办法在 tkinter 中重现这种行为?意思是,仅当未选择 Text
小部件时才会触发 OK
按钮的绑定?
你有几个选择。
- 为
self.on_ok
函数选择不同的绑定,例如 '<Shift-Return>'
.
- 让函数检查哪个小部件具有焦点。如果
self.window
是你的根 tkinter
对象:
def on_ok(event):
if self.window.focus_get() == text:
print('the text widget has focus')
else:
print('some other widget has focus')
使用 tkinter/ttk (8.5+)
,在自定义对话框中,我想将 Return
键绑定到 OK
按钮。
所以我使用标准指令:
self.window.bind("<Return>", self.on_ok)
问题是,在此自定义对话框中还有一个(多行)Text
小部件。一旦 Return
键绑定到 OK
按钮,就无法在不终止对话框的情况下在 Text
小部件中键入 Enter
!输入 Return
现在等同于按 OK
.
我在 Firefox 中检查过,当 Text
控件获得焦点时,按 Return
不会触发确定按钮。它只是输入一个换行符。
如果 OK
按钮有焦点,则按 Return
激活按钮。
有没有办法在 tkinter 中重现这种行为?意思是,仅当未选择 Text
小部件时才会触发 OK
按钮的绑定?
你有几个选择。
- 为
self.on_ok
函数选择不同的绑定,例如'<Shift-Return>'
. - 让函数检查哪个小部件具有焦点。如果
self.window
是你的根tkinter
对象:
def on_ok(event):
if self.window.focus_get() == text:
print('the text widget has focus')
else:
print('some other widget has focus')