Bonjour,
Félicitation pour la simplicité.
Il va de soit, il n'y a pas photo entre un pro et un débutant approchant le sujet.
Version imprimable
Bonjour,
Félicitation pour la simplicité.
Il va de soit, il n'y a pas photo entre un pro et un débutant approchant le sujet.
Bonjour,
merci pour aide.
après m'être rétabli d'une sinusite, j'ai repris votre code et en comprends le fonctionnement. On ne peut faire mieux.
J'y ais ajouter un label indiquant la somme des valeurs des widgets Entry. Cela fonctionne très bien.
Code:
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 # https://docs.python.org/fr/3/index.html -- https://docs.python.org/fr/3/library/functions.html#enumerate -- from tkinter import * from tkinter import messagebox # Librairie des fenêtres d'alerte import tkinter variables = [] # tableau contenant le listing des variables var étant le numéro frame list = [] # tableau contenant le listing des valeurs du widget cible Entry def get_Qgr(event, obj): global var_somme global somme print("get_Qgr -- obj : ", obj, " ", obj.get(), type(obj.get())) print("liste des variables", variables) # exemple : [<tkinter.IntVar object at 0x02344090>, <tkinter.IntVar object at 0x02344310>] list.append(int(obj.get())) somme = 0 for u in range(0, len(list)): somme = somme + list[u] print("somme get_Qgr ", somme) var_somme.set(somme) def removeLabel(frame, var): for u in range(0, len(variables)): if var == variables[u]: print("u - Index de la quantité à supprimer",u) del list[u] print("list des quantités ", list) somme = 0 for u in range(0, len(list)): somme = somme + list[u] print("somme removeLabel", somme) var_somme.set(somme) frame.destroy() ix = variables.index(var) # identifie le numéro frame à supprimer print("ix", ix) variables.pop(ix) # Enlève de la liste l'élément situé à la position indiquée et le renvoie en valeur de retour. # Mise à jour de l'indexation var des frame for i, v in enumerate(variables[ix:], start=ix): # la position et la valeur correspondante sont récupérées print("variables[ix:]",variables[ix:]) v.set(i) print("v.get()", v.get()) print("variables", variables) print("frame list", frame) def addNewLabel(frame): new_frame = Frame(frame) var = IntVar() var.set(len(variables)) variables.append(var) Label(new_frame, text="test").grid(row=0, column=0) Input_gr = "" Entry(new_frame, text="").grid(row=0, column=1) Input_gr = new_frame.winfo_children()[1] # référencement de l'objet Entry for i in range(2, 5): Label(new_frame, textvariable=var).grid(row=0, column=i) Button(new_frame, text="Remove",command=lambda: removeLabel(new_frame, var)).grid(row=0, column=i) new_frame.pack() Input_gr.bind("<Tab>", lambda event, obj=Input_gr: get_Qgr(event, obj)) # Touche TAB if __name__ == '__main__': root = Tk() var_somme = StringVar() somme = 0 frame = Frame(root) c = Button(root, text="add label", command=lambda: addNewLabel(frame)) c.grid(column=0, row=0) b = Label(root, textvariable=var_somme) b.grid(row=0, column=1) b.config(foreground="red") frame.grid(row=1, column=1) root.mainloop()