Bonjour, je suis un grand débutant sur Pyhton.
je suis en train de développer un petit programe a base de checkbuton.
il y a deux modules,
le premier marche comme je le désire: il donne un mapping des boutons cochés.
le deuxième lance le premier module (quand on sélectionne le bouton Ajout suppression MGW)
et là le mapping est toujours égale à [0, 0, 0] quelque soit le nombre de bouton cochés.
si vous avez une idée de ce qu'il se passe...
il faut mettre des fichiers config1. txt , config2.txt,... dans le répertoire:C:/config_mgw
premier module enregistré dans un fichier nommé check6.py
ceci est le second module (qui appelle check6 lorsque l'on sélectionne <Ajout suppression MGW>
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 from tkinter import * import os fen = Tk() #fra1 = Frame(fen) class Bouton (Frame): #classe de bouton #fentre dans laquelle les boutrons vont s'ouvrir' def __init__(self, boss=None): Frame.__init__(self) print('je commence la class') #Label(root, text = 'Premier champ :') #on definit l'ensemble des fichiers de conf dans le repertoir cible self.vars = [] self.chk=[] i = 0 nbvmg = 0 listmgw = [] filepath = [] listmgw = os.listdir('C:/config_mgw') print('dans init listgmw=',listmgw) nbvmg = len(listmgw) filepath.append('C:/config_mgw/' + listmgw[i]) #i = i + 1 print ('listmgw dans Bouton=',listmgw) #met en place les boutons #print('picks=',listmgw) for pick in listmgw: #print('pick=',pick) var = IntVar() self.chk = Checkbutton(fen, text=pick, variable=var) #print('var=',var.get()) #print('self.chk=',self.chk) self.chk.grid() self.vars.append(var) def allume(self): print('j alume les boutons du bas',self) Button(fen, text='Valider', command=self.state).grid() Button(fen, text='Retour', command=fen.destroy).grid() fen.mainloop def state(self): m=IntVar() var = IntVar() #print('self=',self,type(self)) #print(("lambda=", lambda var: var.get(var))) #print('self.vars=',self.vars) #print('map=', map((lambda var: var.get()), self.vars)) m=map((lambda var: var.get()),self.vars) print('vars',self.vars) print ('m dans state=',m) print('list de m dans state=',list(m)) return list(m) print ('je suis dans check6') if __name__ == "__main__": #root=Tk() #listmgw=[] r1=Bouton() print ('r1=',r1) print('type de r1 dans main de check6=',type(r1)) print('r1 en sortie=',r1) #r1.grid() r1.allume() #result=r1.state print ('r1 dans main=',r1) #print ('listmgw avant la sortie=',listmgw) #print('result=',result) r1.mainloop
les résultats obtenus sont:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 import os from tkinter.filedialog import askopenfilename from tkinter import * from tkinter.filedialog import asksaveasfile, askopenfile #import check4 class Application(Frame): def __init__(self): Frame.__init__(self) # constructeur de la classe parente self.master.title("comparaison mgw") frSup =Frame(self) print( 'init') def mgw (): result=[] #m=IntVar() #definir les mgw concernées print('je lance check6') import check6 print('fin d import') m=check6.Bouton()# instanciation de la classe print('m dans mgw=',m) print('type de m dans mgw=',type(m)) result=m.allume() print('fin allume',m) #result=m.state() print('result=',result) #m.allstates() print ('m=',m) print('classe de m=',type(m)) #o=check6.state()#on recupere la list des mgw #print('list state o=',o) print('fin de check6, m=',m) print('mgw') m.mainloop def filtre (): #definir les filtre sur les parametres concernées print('filtre') def reference (): #definir la mgw de reference print('reference') if __name__ == '__main__': m=[] root=Tk() listmgw=[] app=Application() but=Button(root, text ="Def reference", command =reference) but.pack(side =LEFT) Button(root, text ="Ajout suppression MGW", command =mgw).pack(side =LEFT) print('pff') Button(root, text ="Filtre", command =filtre).pack(side =LEFT) Button(root, text ="quiter", command =root.destroy).pack(side =LEFT) app.mainloop()
le premier module check6.py seul quand le premier conif1.txt est sélectionné uniquement: list de m dans state= [1, 0, 0]
le second modul essai3.py quand le premier conif1.txt est sélectionné uniquement: list de m dans state= [0, 0, 0]
Si vous avez d'ou vient l'erreur..
merci d'avance.
Pug22
P.S. j'ai ajouté les fichiers py, attention le répertoire n'est pas le même que celui de l'exemple.
Partager