我有运行 WX Python GUI 的主线程。主 GUI 为用户提供了一个图形界面来选择脚本(映射到 python 函数)和一个“开始”按钮,它会产生第二个线程(线程 #2)来执行选定的脚本。我遇到的问题是我无法弹出一个新的 WX GUI (GUI2) 并让用户能够输入数据。
# Function that gets invoked by Thread #2
def scriptFunction():
# Code to instantiate GUI2; GUI2 contains wx.TextCtrl fields and a 'Done' button;
# When 'Done' button is clicked, data entered in fields are process and second GUI is destroyed
gui2Frame = Gui2Frame(None, "Enter Data Gui")
gui2Frame.Show(True)
# This is where I need help. Cannot figure out how to pend for user input;
# In this example; my 'Done' button sets the Event flag
verifyEvent = threading.Event()
verifyEvent.wait(10)
# Process entered data time
processData()
目前,这种方法将 GUI2 锁定 10 秒。这是有道理的,因为生成的线程被锁定了。使用 time.sleep() 实现 while 循环也是如此。我研究了生成第三个线程,只是为了处理 GUI2,但我又回到不知道如何保持 GUI2 处于活动状态。有什么建议么?另外,请不要建议将多线程架构更改为一个线程;谢谢你。