1

これを新しい質問として投稿するよう誰かに言われました。これは、スポーン スレッドからの新しい 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

2 つのスクリプトは別々にする必要がありますか? つまり、1 つのメイン ループで複数のフレームを実行し、pubsub を使用して 2 つのフレーム間で情報を転送できます。チュートリアル/

理論的には、あなたがしていることもうまくいくはずです。私が聞いた他の方法では、Python のソケット サーバー ライブラリを使用して、2 つのプログラムがデータをポストおよび読み取りできる非常に単純なサーバーを作成します。または、データベースまたはディレクトリのファイル更新を監視します。

于 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 に答える