2011-03-10 23 views
0

私は1つのダイアログアプリケーションと1つのフレームアプリケーション(2つのファイル)を持っていて、それらを相互にやりとりしたい。wxpythonのリンクと新しいウィンドウのアプリケーションを開く

ダイアログアプリケーションのボタンをクリックして、ダイアログアプリケーションを閉じてフレームアプリケーションを開きます。どのように私はこれを達成することができますか?

私のダイアログのアプリは非常に簡単で、あなたはそれが妙に作用しないように、あなたのダイアログアプリの周りにフレームを作成したいと思うこの

class ThisClass(wx.Dialog): 
    def __init__(self, parent, id, title): 
     wx.Dialog.__init__(self, parent, id, title, size=(APP_SIZE_X, APP_SIZE_Y)) 

     wx.Button(self, 1, 'Start Monitoring', (50, 20), (120,-1)) 
     wx.Button(self, 2, 'View Data', (50, 70), (120, -1)) 
     wx.Button(self, 3, 'Close', (50, 120), (120, -1)) 


     self.Bind(wx.EVT_BUTTON, self.idk1, id=1) 
     self.Bind(wx.EVT_BUTTON, self.idk2, id=2) 
     self.Bind(wx.EVT_BUTTON, self.clickClose, id=3) 

     self.Centre() 
     self.ShowModal() 

    def idk1(self,event): 
     #i want to launch another app here if 
     #this (Start Monitoring) button is pressed 

    def idk2(self, event): 
     self.Close(True) 

    def clickClose(self, event): 
     self.Close(True) 

app = wx.App(0) 
MyButtons(None, -1, 'buttons.py') 
app.MainLoop() 

おかげ

答えて

1

ようになります。誰もあなたがそれを表示する必要は言わなかっ:あなたのidk1方法で

class ThisFrame(wx.Frame): 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(0, 0)) 
     dlg = ThisClass(self, -1, "buttons.py") 

     if dlg.ShowModal() == 1: 
      from otherfile import MyFrame 
      mf = MyFrame(self, "MyFrame") 
      mf.Show() 

app = wx.App(0) 
frame = ThisFrame(None, 'ThisFrame') 
app.MainLoop() 

、既知の値を返すために、(1)self.EndModalを呼び出します。いまのところあなたのアプリをきれいに破壊する方法を見つけなければならないでしょうが、ここから得ることができると思います!

+0

お返事ありがとうございます。私はあなたが提案したものに似た何かをしました、私はMyFrameを他のファイルから飛び出させることができましたが、私はそれと対話できません。ウィジェットが機能しない等 – lamba

+0

あなたのotherfileで、app = MyFrame(0)とapp.MainLoop()を実行し、その関数を代わりに呼び出す関数を作ります。それは私のために働いた。 – Jake

関連する問題