Python 如何更改tkinter标签文本以显示按键信息?
我正在尝试使用热键启动/停止程序。我有一个标签来显示热键当前设置为什么,还有一个按钮来允许他们更改它(我使用Pynput来检测按键) 该按钮链接到以下代码:Python 如何更改tkinter标签文本以显示按键信息?,python,tkinter,pynput,Python,Tkinter,Pynput,我正在尝试使用热键启动/停止程序。我有一个标签来显示热键当前设置为什么,还有一个按钮来允许他们更改它(我使用Pynput来检测按键) 该按钮链接到以下代码: def set_Hotkey(): def on_press(key): global hotkey hotkey = key listener.stop() key_label.config(text=f'{key}') def
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\u label.config()
行替换为print(key)
或print(str(key))
,它就不会麻烦了。然而,当我尝试将标签文本设置为显示按下的键时,程序冻结,我被迫将其关闭。我的控制台中没有收到任何形式的错误消息,它只是冻结了
有人能解释一下这里发生了什么以及如何修复它吗?
pynput.keyboard.Listener()
也是一个线程,因此调用join()
将阻止tkinter
main循环
更改:
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
致:
你能从tkinter方面包含更多的代码吗?
listener = Listener(on_press=on_press, on_release=on_release)
listener.start()