1

有人告诉我将此作为一个新问题发布。这是从 spawn 线程实例化新的 WX Python GUI的后续行动

我将以下代码实现到从衍生线程(Thread2)调用的脚本中

# Function that gets invoked by Thread #2
def scriptFunction():
  # Code to instantiate GUI2; GUI2 contains wx.TextCtrl fields and a 'Done' button
  p = subprocess.Popen("python secondGui.py", bufsize=2048, shell=True,stdin=subprocess.PIPE, stdout=subprocess.PIPE)

  # Wait for a response
  p.wait()

  # Read response
  response = p.stdout.read()

  # Process entered data
  processData()

在运行 GUI2 的新进程上,我希望“完成”按钮事件处理程序将 4 个数据集返回给 Thread2,然后自行销毁(GUI2)

def onDone(self,event):
  # This is the part I need help with; Trying to return data back to main process that instantiated this GUI (GUI2)
  process = subprocess.Popen(['python', 'MainGui.py'], shell=False, stdout=subprocess.PIPE)
  print process.communicate('input1', 'input2', 'input3', 'input4')

  # kill GUI
  self.Close()

目前,此实现在新进程中生成了另一个主 GUI。我想要做的是将数据返回到原始过程。谢谢。

4

2 回答 2

0

这两个脚本必须分开吗?我的意思是,您可以在一个主循环上运行多个帧,并使用 pubsub 在两者之间传输信息:http: //www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-教程/

从理论上讲,您正在做的事情也应该有效。我听说过的其他方法包括使用 Python 的套接字服务器库来创建一个非常简单的服务器,该服务器运行两个程序可以发布和读取数据。或数据库或监视目录以进行文件更新。

于 2012-05-21T17:26:23.177 回答
0

线程#2调用的函数

def scriptFunction():
  # Code to instantiate GUI2; GUI2 contains wx.TextCtrl fields and a 'Done' button
  p = subprocess.Popen("python secondGui.py", bufsize=2048, shell=True,stdin=subprocess.PIPE, stdout=subprocess.PIPE)

  # Wait for a response
  p.wait()

  # Read response and split the return string that contains 4 word separated by a comma
  responseArray = string.split(p.stdout.read(), ",")

  # Process entered data
  processData(responseArray)

在 GUI2 上单击“完成”按钮时调用的“完成”按钮事件处理程序

def onDone(self,event):
  # Package 4 word inputs into string to return back to main process (Thread2)
  sys.stdout.write("%s,%s,%s,%s" % (dataInput1, dataInput2, dataInput3, dataInput4))

  # kill GUI2
  self.Close()

感谢您的帮助迈克!

于 2012-05-23T23:54:33.780 回答