Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改tkinter标签文本以显示按键信息?_Python_Tkinter_Pynput - Fatal编程技术网

Python 如何更改tkinter标签文本以显示按键信息?

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

我正在尝试使用热键启动/停止程序。我有一个标签来显示热键当前设置为什么,还有一个按钮来允许他们更改它(我使用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\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()