Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2383 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Transférer une variable entre plusieurs scripts python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transférer une variable entre plusieurs scripts python

n°1706879
grosbedo
Posté le 24-03-2008 à 08:44:40  profilanswer
 

Bonjour tout le monde :-)
 
Je me suis assez récemment mis au Python, mais je programme déjà depuis un certain temps dans d'autres, dont l'ASM, le PHP, Java, scripts shells etc... Et la je tombe sur un os: je n'arrive pas a transferer une information entre plusieurs scripts.
 
En effet, mon application est composée de plusieurs Form faites avec wxWidgets, et j'ai besoin de pouvoir communiquer d'une Form à l'autre, or il semble que cela ne soit pas possible ! J'ai essayé avec des variables globales, ca passe pas. J'ai essayé aussi d'appeler une classe ou fonction de l'autre, ca ne fonctionne que si on vient de créer juste avant la Form dans laquelle se trouve la fonction, car même si elle a déjà été créé auparavant ca ne fonctionne plus (mais c'est peut-etre dû au ramasse-miettes)...
 
Bref si vous avez un code d'exemple ou une piste cela me serait d'un très grand secours :D


Message édité par grosbedo le 24-03-2008 à 09:03:23
mood
Publicité
Posté le 24-03-2008 à 08:44:40  profilanswer
 

n°1706956
masklinn
í dag viðrar vel til loftárása
Posté le 24-03-2008 à 14:34:33  profilanswer
 

Je n'ai strictement rien compris au problème.

 

Pourrais tu nous donner un cas très simple (de l'ordre de 50 ou 100 lignes de code maximum) montrant le problème que tu as, et expliquant ce que tu voudrais faire? Parce que j'ai l'impression que tu nages dans la confusion.


Message édité par masklinn le 25-03-2008 à 11:55:10

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1708790
grosbedo
Posté le 27-03-2008 à 16:11:57  profilanswer
 

Rebonjour,
Non je ne suis pas confus et je m'attendais à cette réponse, je pensais pourtant m'avoir exprimé clairement. Le problème c'est que mon code est très complexe maintenant donc c'est pas vraiment simple de donner un exemple, m'enfin je vais essayer:
 
Code Form1:
 
form2 = form2.create (self)
 
Code Form2:
 
N'importe quoi etc...
 
Depuis form1, je peux faire form2.fonction(), par contre depuis form2, je peux pas faire form1.fonction() à moins de refaire form1 = form1.create (self), mais ca recree une autre instance de Form1, et ce n'est pas ce que je veux (car premièrement ca consomme des ressources inutiles, et parce que je ne récupère pas les champs créé dans la première instance de Form1).
 
Voila si quelqu'un à une solution ca serait magistral ! :D

n°1708834
masklinn
í dag viðrar vel til loftárása
Posté le 27-03-2008 à 17:02:05  profilanswer
 

Elle est créée où, là, ton instance de form1?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1709021
grosbedo
Posté le 28-03-2008 à 02:39:19  profilanswer
 

Tu parles de la toute première instance de form1 ?
Dans le script qui sert de starter, dans une classe BoaApp:
 
class BoaApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        self.main = frSend.create(None)
 
(NB: je ne code pas avec Boa, c'est l'ancien dev qui l'utilisait, je préfère PSPad ou PyScripter).
 
Mais de toutes facons le point de départ n'a pas grande importance puisque ce qui m'interesse c'est de pouvoir passer d'une instance A a B et en retour de B a A. Je crois bien que c'est à cause du handler, mais comment le transférer si les variables globales ne passent pas entre les instances ?


Message édité par grosbedo le 28-03-2008 à 02:40:35
n°1757640
grosbedo
Posté le 10-07-2008 à 04:04:58  profilanswer
 

Bon depuis le temps j'ai trouvé comment faire. Tout simplement il suffit de passer le parent en parametre, comme cela, on peut accéder à tous les champs et variables du parent dans le script fils. Un exemple:
 

def create(parent):
 return MyDialog(parent)
 
class MyDialog(wx.Dialog):
    def __init__(self, prnt, *args, **kwds):
        global fSend
        fSend = prnt
        # begin wxGlade: MyDialog.__init__
        kwds["style"] = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX|wx.THICK_FRAME
        wx.Dialog.__init__(self, parent=prnt, *args, **kwds)


 
Par contre, il est necessaire de rendre global une variable dans laquelle on stocke la valeur du parent, car sinon la variable prnt est détruite a la fin de init. Et on ne peut rendre globale la variable prnt.
Apres, lorsque l'on a fini, il suffit de rappeler la fenetre fSend depuis le script enfant.
 
Si ca peut servir a quelqu'un...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Transférer une variable entre plusieurs scripts python

 

Sujets relatifs
PyCon FR - Journées PythonMacro excel passer plusieurs variable
NOM de la variable en phpplusieurs sessions sur un nom de domaine
[resolu] 1 clic, 2 ou plusieurs cibles ouvertes1. Récupérer une variable javascript - 2.Ouvrir une nouvelle fenêtre
Formule vba avec plage de taille variable[Résolu] Problème de syntaxe?
Durée de vie d'une variable 
Plus de sujets relatifs à : Transférer une variable entre plusieurs scripts python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR