在Gtk3中给予窗口焦点

时间:2013-06-16 06:59:30

标签: python gtk3

我在Ubuntu 13.10上使用Python 2.7.4和Gtk3。

我正在使用Keybinder库隐藏并使用热键显示我的Gtk窗口。现在,当我的窗口确实显示使用热键时,它并不总是获得焦点。

相关代码如下:

def toggle(self, key, data):
    if self.hidden:
        self.hidden = False
        self.set_keep_above(True)
        self.set_accept_focus(True)
        self.present()
        self.enteredName.grab_focus()
    else:
        self.hidden = True
        self.hide()

此处,self表示Gtk窗口,self.enteredNameGtk.Entry()类型的窗口小部件。

通常情况下,set_accept_focus()set_keep_above(),后跟present()的组合有效。如果没有set_keep_above,我的窗口就不会升到顶部。如果没有set_accept_focus,我的窗口就无法获得键盘焦点。

以上设置在我启动应用程序然后使用热键进行测试(隐藏并显示)时有效。我的窗口总是收到键盘焦点。不过,假设我打开了一个GVim窗口并且我已经给它了键盘焦点。按下热键后,我的窗口显示在顶部(即使在GVim窗口的顶部),但键盘焦点仍然在GVim窗口。

我尝试了几种组合(通过添加activate),并将重点放在文本小部件上。但它没有按预期工作。

我在这里缺少什么?

0 个答案:

没有答案