python tk mainloop原理_将Tkinter mainloop与另一个事件监听器相结合

我正在尝试构建一个侦听某些键组合的程序,然后在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值