tkinter:bind返回OK按钮的键 - 但不是Text小部件

时间:2015-06-19 03:46:30

标签: python binding tkinter

使用tkinter/ttk (8.5+),在自定义对话框中,我想将Return键绑定到OK按钮。 所以我使用标准指令:

self.window.bind("<Return>", self.on_ok)

问题是,在这个自定义对话框中还有一个(多行)Text小部件。一旦Return键绑定到OK按钮,就不能再在Enter窗口小部件中键入Text而不终止对话框!键入Return现在等同于按OK

我在Firefox中检查过,当Text控件有焦点时,按Return不会触发OK按钮。它只是输入换行符。 如果OK按钮具有焦点,则按Return会激活该按钮。

有没有办法在tkinter中重现这种行为?含义,仅当未选择OK窗口小部件时才会触发Text按钮的绑定?

1 个答案:

答案 0 :(得分:2)

你有两个选择。

  1. self.on_ok功能选择不同的绑定,例如'<Shift-Return>'
  2. 让功能检查哪个小部件具有焦点。如果self.window是您的根tkinter对象:
  3. def on_ok(event):
        if self.window.focus_get() == text:
            print('the text widget has focus')
        else:
            print('some other widget has focus')