4

我在 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.enteredName是一个类型为 的小部件Gtk.Entry()

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

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

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

我在这里缺少什么吗?

4

0 回答 0