Python 在运行tkinter Main循环时,如何等待循环返回值?

Python 在运行tkinter Main循环时,如何等待循环返回值?,python,tkinter,Python,Tkinter,我使用tkinter创建了一个窗口,并使用window.mainloop()显示该窗口 此tkinter窗口有一个按钮,我正在等待用户按下: button = Button(buttonFrame, text='Next', command=pressed) 然而,在现实生活中,我也有用户可以按下的物理按钮。我有一个通过USB与物理按钮通信的功能。它只是在while循环中等待物理按钮被按下,然后返回true。因此,如果按下物理或数字按钮,则调用“按下”功能 问题是我不知道如何同时等待两者。等待

我使用tkinter创建了一个窗口,并使用window.mainloop()显示该窗口

此tkinter窗口有一个按钮,我正在等待用户按下:

button = Button(buttonFrame, text='Next', command=pressed)
然而,在现实生活中,我也有用户可以按下的物理按钮。我有一个通过USB与物理按钮通信的功能。它只是在while循环中等待物理按钮被按下,然后返回true。因此,如果按下物理或数字按钮,则调用“按下”功能


问题是我不知道如何同时等待两者。等待USB响应的代码被阻塞,因为它使用while循环。tkinter的主回路也处于阻塞状态。那么,如何让这两个线程同时等待呢?

我可以使用线程模块使其工作:

window = Tk()
..
..
thread = threading.Thread(target=myButton)
thread.start()
window.mainloop()

在myButton函数中,我调用该函数从USB按钮获取按钮按下。

查看
线程
模块基本上生成一个线程来观察物理按钮按下的过程就是我要走的路线。您可以尝试使用
root.after(毫秒,函数)
每隔几毫秒运行一次相同的函数,而不执行
循环,而不阻塞
mainloop
。但它只能在代码检查按钮时工作,并且在未按下时返回false,而无需等待按下。
window = Tk()
..
..
thread = threading.Thread(target=myButton)
thread.start()
window.mainloop()