我为隐藏和显示我的窗口编写了全局快捷方式示例,使用像“F12”这样的键,我使用了 python-xlib 和一些名为“pyxhook”的脚本,一切正常,除非我想隐藏()和显示()窗口几次我的过程变成一个僵尸,但相同的代码可以隐藏和显示按钮。
#!/usr/bin/python
# -*- coding: utf-8; -*-
from gi.repository import Gtk, GObject
from pyxhook import HookManager
GObject.threads_init()
class Win(Gtk.Window):
def __init__(self):
super(Win, self).__init__()
self.connect('destroy', Gtk.main_quit)
self.button = Gtk.Button()
self.add(self.button)
self.resize(200,150)
self.show_all()
def handle_global_keypress(self, event):
if event.Key == 'F12':
if self.get_visible():
self.hide()
else:
self.show()
### this part works fine with button
#if self.button.get_visible():
# self.button.hide()
#else:
# self.button.show()
def main():
app = Win()
hm = HookManager()
hm.HookKeyboard()
hm.KeyDown = app.handle_global_keypress
hm.start()
Gtk.main()
hm.cancel()
if __name__ == "__main__":
main()
编辑:我使用 Keybinder 库而不是编写纯 python keybinder 解决了我的问题。 http://kaizer.se/wiki/keybinder/