「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()
編集:純粋なpythonキーバインダーをコーディングする代わりに、キーバインダーライブラリを使用して問題を解決しました。 http://kaizer.se/wiki/keybinder/