我正在尝试构建一个侦听某些键组合的程序,然后在Tkinter窗口中向用户显示信息。为此,我使用了类似的键盘记录器(本例简化):
from pyHook import HookManager
from pythoncom import PumpMessages
import Tkinter as tk
def on_keyboard_event(event):
label.config(text=event.Key)
root.update()
return True
hm = HookManager()
hm.KeyDown = on_keyboard_event
hm.HookKeyboard()
root = tk.Tk()
label = tk.Label(root, text='Hello world')
label.pack()
PumpMessages()
正如预期的那样,窗口弹出并向用户显示他们按下的键。但是,我希望通过与Tkinter窗口交互来集成功能以显示其他消息,例如通过按下按钮。但是,似乎我需要Tkinter的mainloop来做这个,我无法弄清楚如何与PumpMessages()一起运行,因为它也会停止类似于mainloop()的代码。
我尝试在root.after()中运行root.mainloop(),我尝试重新创建root.mainloop,如下所示:
def mainloop():
root.update()
root.after(50, mainloop)
然后在PumpMessages之前运行它,但这些解决方案都不起作用。它似乎也不能在一个线程中运行PumpMessages或root.mainloop,尽管我可能无法正确执行。如果使用Tkinter是不可能的,那么我是否可以使用可以使用的备用Python GUI?
答案 0 :(得分:0)
您无需创建使用mainloop()
的函数,只需将mainloop()
放在代码的底部即可。如果您想延迟,请使用root.after(milliseconds, function)
另外,请务必将mainloop()
放在PumpMessages()
e.g。
def mainloopfunction():
mainloop()
root.after(5000, mainloopfunction)
希望我能帮忙!