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