结合Tkinter主循环和另一个事件侦听

2024-04-25 13:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个程序,监听某些组合键,然后在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()类似的代码。在

我试着跑步根.mainloop()在a根。后(),我试着重新创作根.mainloop是这样的:

^{pr2}$

然后在PumpMessages之前运行它,但是这些解决方案都不起作用。你似乎也不能运行PumpMessages或根.mainloop虽然我可能做得不对。如果这在Tkinter中不可能实现,那么我是否可以使用另一个pythongui来实现呢?在


Tags: text用户fromimporteventontkinterroot
1条回答
网友
1楼 · 发布于 2024-04-25 13:19:25

您不需要创建函数来使用mainloop(),所以只需将mainloop()放在代码的底部。如果要延迟,请使用root.after(milliseconds, function)

另外,记得把mainloop()放在PumpMessages()之前

例如

def mainloopfunction():
    mainloop()

root.after(5000, mainloopfunction)

希望我能帮忙!在

相关问题 更多 >