我在 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
),并将焦点放在文本小部件上。但它没有按预期工作。
我在这里缺少什么吗?