2

我希望我的(Python/Windows)GUI GTK 窗口在按键时关闭。然而,没有任何反应。我是初学者,我正在谷歌寻找答案。我的英语也不是很专业。请耐心等待我。

import pygtk
import gtk
import pyHook

class Program:
    def QuitOnKeyPress(self):
        if pyHook.GetKeyState(81) == '1':
           gtk.main_quit()

def __init__(self):
    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    self.window.set_position(gtk.WIN_POS_CENTER)
    self.window.set_size_request(300, 300)
    self.window.show()

def main(self):
    gtk.main()


if __name__ == "__main__":
    prog = Program()
    prog.main()

while 1:
    prog.QuitOnKeyPress() #Tried without () too

你能告诉我我做错了什么吗?我也尝试使用 win32api 和 pyGame。但是没有安装win32api [from here],只有win32com。PyGame 也有问题 - 没有安装键盘事件/模块。

4

1 回答 1

1

查看pyHook 教程。您的 while 循环检查是否按住某个键的方法效果不佳。相反,它应该是这样的:

def OnKeyboardEvent(event):
    if event.KeyID == 81:
        gtk.main_quit()

# return True to pass the event to other handlers
    return True

# create a hook manager
hm = pyHook.HookManager()
# watch for all mouse events
hm.KeyDown = OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
pythoncom.PumpMessages()
于 2016-02-16T05:32:06.020 回答