Problème boucle while et evenement
Bonjour,
voila, j'ai une boucle while qui me permet de créer et binder dynamiquement des boutons :
Code:
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:
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:
1 2
|
self.Bind(wx.EVT_BUTTON, self.listDir(dv), dv2) |
et que je modifie listDir de la sorte :
Code:
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