Bonjour,
voila, j'ai une boucle while qui me permet de créer et binder dynamiquement des boutons :
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
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
Si j'éxécute ce code, la boucle crée bien 2 boutons avec en label C: et D:
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 ......
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 :
et que je modifie listDir de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 self.Bind(wx.EVT_BUTTON, self.listDir(dv), dv2)
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...
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 ....
Quelqu'un à une idée?
merci d'avance,
rc
Partager