我正在尝试使用户可以使用热键启动/停止程序。我有一个标签来显示当前热键的设置,还有一个按钮来允许他们更改热键(我正在使用Pynput来检测按键)。
该按钮链接到以下代码:
def set_Hotkey():
def on_press(key):
global hotkey
hotkey = key
listener.stop()
key_label.config(text=f'{key}')
def on_release(key):
pass
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
我也尝试过使用StringVar,并尝试将文本设置为,str(key)
而不是f'{key}'
全部无效。
每当我运行该程序时,它就可以正常启动,并且如果我key_label.config()
用print(key)
或替换该行,print(str(key))
也就不会麻烦了。但是,当我尝试设置标签文本以显示按下了什么键时,程序冻结,我被迫将其关闭。我的控制台没有收到任何形式的错误消息,它只是冻结。
有人可以解释一下这里发生了什么以及如何解决吗?
pynput.keyboard.Listener()
也是一个线程,因此调用join()
将阻塞tkinter
mainloop。
更改:
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
至:
listener = Listener(on_press=on_press, on_release=on_release)
listener.start()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句