Salut,
J'ai un gros problème avec mes applications. J'explique :
J'ai crée deux scripts (ils se trouvent dans deux fichiers différents)
-> Un script destiné à créer des fichiers (Maker) [Maker.py]
-> Un script destiné à lire les fichiers crées par le Maker (Reader) [Reader.py]
Le programme permet d'ordonner des informations contenues dans une liste. Le Maker permet de créer cette liste (à laquelle on peut rajouter autant d'éléments que voulu) que l'on sauve dans un fichier, le Reader récupère ces données et les présente au lecteur. Le Reader se fermer automatiquement lorsque le lecteur a parcouru tous les éléments un par un. Un peu comme un :
for elements in liste:
présenter elements a lecteur
self.frame.Destroy()
Dans le Maker, je crée un fichier, et je l'enregistre. Quand je l'ouvre avec le Reader, cela marche parfaitement sans aucun problème.
Maintenant, je voudrais pouvoir faire une preview du fichier tel qu'il serait lu avec le Reader. J'ai crée une wx.Toolbar et j'ai mis un bouton "Test" dessus. Puis, j'importe le Reader et je le lance. Tout fonctionne parfaitement jusqu'à ce que le Reader se ferme(lorsque l'utilisateur a parcouru l'intégralité du fichier)
Là, aucun message d'erreur ne s'affiche, on dirait que l'application est bloquée. Graphiquement, tout fonctionne puisque je peux appuyer sur les boutons (wx.Button), mais ils ne génèrent pas d'évènements ...
Par contre, la Toolbar marche très bien puisque elle génère des évènements.
C'est vraiment bizarre ... J'ai du oublier un truc essentiel ...
Voici les codes du Maker et du Reader :
Maker:
Reader:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import wx import Reader ID_TEST=202 class MainApp(wx.App): def OnInit(self): #Variables ... self.fichier="C:/XXX.xxx" self.toolbar=self.frame.CreateToolBar() self.toolbar.AddTool(ID_TEST,wx.Bitmap(u"Images/play.png")) wx.EVT_MENU(self.frame,ID_TEST,self.OnTest) self.bouton1=wx.Button(self.panel,-1,label="OK",pos=(50,50)) self.Bind(wx.EVT_BUTTON,self.<fonction>,self.bouton1) etc ... ... #Fonctions ... def OnTest(self,evt): #On demande à l'utilisateur de sauvegarder son fichier, puis on récupère le chemin du fichier dans self.fichier. msg=wx.MessageDialog(self.panel1,message=u"Vous devez sauvegarder avant de pouvoir tester. Appuyez sur \"Oui\" pour sauvegarder.",caption=u"Tester",style=wx.YES_NO|wx.NO_DEFAULT|wx.STAY_ON_TOP|wx.ICON_EXCLAMATION) test=msg.ShowModal() if test==wx.ID_YES: self.OnSave() Reader.Reader(self.fichier)
Toutes les fonctionnalités du Maker sont opérationelles tant que le Reader n'a pas été instancié au moins une fois au sein du Maker ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import wx class Reader(wx.App): #J'utilise __init__ pour passer le nom de fichier au Reader afin qu'il puisse l'ouvrir def __init__(self,args): self.fichier=args wx.App.__init__(self) def OnInit(self): if __name__=="__main__": dlg=wx.FileDialog( ... ... ...) self.fichier=dlg.GetPath() #Variables #Lecture du fichier et présentation du résultat ... #Fermeture automatique via un Destroy() lorsque l'intégralité du fichier a été parcouru if __name__=='__main__': app=Reader("") app.MainLoop()
Le Reader fonctionne très bien tout seul.
Voilà, j'espère avoir été assez clair ...
Bye et merci de votre aide
Lotendan
Partager