在 Gtk3 中赋予窗口焦点

Agi*_*ilE 6 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()
Run Code Online (Sandbox Code Playgroud)

这里,self指的是 Gtk 窗口,self.enteredName是类型为 的小部件Gtk.Entry()

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

当我刚刚启动我的应用程序然后使用热键(隐藏和显示它)测试它时,上面的设置有效。我的窗口总是接收键盘焦点。然而,假设我打开了一个 GVim 窗口,并且我已将键盘焦点赋予它。按下热键时,我的窗口显示在顶部(甚至在 GVim 窗口的顶部),但键盘焦点仍然位于 GVim 窗口。

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

我这里缺少什么吗?