2011-03-10 5 views
0

J'ai une application de dialogue et une application d'image (deux fichiers) et je veux qu'ils interagissent les uns avec les autres.wxpython lien et ouvrir une nouvelle fenêtre apps

Je voudrais cliquer sur un bouton de mon application de dialogue pour fermer l'application de dialogue et ouvrir mon application de cadre. Une idée de comment je peux y parvenir?

mon application de dialogue est très simple et ressemble à ce

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() 

Merci

Répondre

1

Vous souhaitez créer un cadre autour de votre application de dialogue de sorte qu'il n'agit pas étrangement. Personne n'a jamais dit que vous devez Montrez:

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() 

Dans la méthode idk1, appelez self.EndModal (1) pour retourner une valeur connue. Maintenant, à un moment donné, vous devrez trouver comment détruire proprement vos applications, mais je pense que vous pouvez l'obtenir à partir d'ici!

+0

Bonjour, merci pour la réponse. J'ai fait quelque chose de similaire à ce que vous avez suggéré, j'ai réussi à faire sortir mon MyFrame (de otherfile) mais je ne peux pas interagir avec. Les widgets ne fonctionnent pas, etc. – lamba

+0

Dans votre fichier autre, créez une fonction qui fait app = MyFrame (0) et app.MainLoop(), puis appelez cette fonction à la place. Cela a fonctionné pour moi. – Jake

Questions connexes