Bonjour,

voila, j'ai une boucle while qui me permet de créer et binder dynamiquement des boutons :
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
 
    def ma_fonction(self):
        global tx
        global dv,dv2,dv_final,lst
        lst={}        
        loc=8
        tx=1
        bt=1
 
        while tx<=nb_bt:
            dv=str(occ[tx])
            dv2=str(occ[tx])
            dv2= wx.Button(self, tx, dv, wx.Point(loc,50))
            self.Bind(wx.EVT_BUTTON, self.listDir, dv2)
            tx=tx+1
            loc=loc+80
et une fonction qui gère l'évenement en rapport :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
def listDir(self, e):
        dv_final='dir '+dv
        print '\ndvfinal=',dv_final
        ......
Si j'éxécute ce code, la boucle crée bien 2 boutons avec en label C: et D:
puisque que c'est ce que j'ai dans ma config, mais quand je clique sur C:, la fonction listDir() ne prend en compte la valeur de dv qu'à sa dernière itération.
Cela semble logique puisque à l'execution de listDir, le while est déjà terminé.

Mais si je rajoute dv en paramètre comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
self.Bind(wx.EVT_BUTTON, self.listDir(dv), dv2)
et que je modifie listDir de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
def listDir(self, v):
        dv_final='dir '+v
        print '\ndvfinal=',dv_final
        ....
et bien listDir, prend la bonne valeur, à savoir C: pour le premier bouton cliqué et D: pour le deuxième, mais parcontre, est lancée PENDANT que le while s'exécute, ce que je suis loin de comprendre...

Quelqu'un à une idée?

merci d'avance,
rc