0

我有运行 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 处于活动状态。有什么建议么?另外,请不要建议将多线程架构更改为一个线程;谢谢你。

4

1 回答 1

0

一个程序中不能有两个 wxPython 主循环。您确实只需要使用第一个 wxPython 程序的主线程。如果要生成另一个应用程序,请使用子进程。像这样的东西应该工作:

import subprocess
subprocess.Popen("python path/to/myscript.py")
于 2012-05-21T13:40:50.680 回答