liste tkinter.IntVar object
Bonjour à tous,
j'ai une variable textvariable sur un label
Code:
Label(frame, textvariable=var).place(x=0, y=0)
que j'enregistre en un tableau
Code:
var_suite.append(var)
ce qui me donne ceci avec print
Code:
[<tkinter.IntVar object at 0x02EE27B0>, <tkinter.IntVar object at 0x02EE28F0>, <tkinter.IntVar object at 0x02EE2F90>, <tkinter.IntVar object at 0x02EF13F0>]
comment puis extraire seulement un de ces éléments?
j'ai essayé avec
Code:
1 2 3
|
for i in range(len(var_suite)):
print(var_suite[i]) |
j'obtient --> PY_VAR44
alors je fais ainsi :
Code:
1 2 3
|
for i in range(len(var_suite)):
print(var_suite[i].get() |
j'obtient --> 0 (un chiffre)
s'il vous plaît, comment avoir ceci<tkinter.IntVar object at 0x02EE27B0>
merci de votre temps
Supprimer en lot frame(s) générée(s)
merci pour réponse ne me permettant pas de trouve la solution au problème suivant :
j'ai repris votre exemple suivant (générer plusieurs frames).
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
|
from tkinter import *
from tkinter import messagebox # Librairie des fenêtres d'alerte
variables = []
def removeLabel(frame, var):
frame.destroy()
ix = variables.index(var)
variables.pop(ix)
# Mise à jour de l'indexation var des frame
for i, v in enumerate(variables[ix:], start=ix):
v.set(i)
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)
for i in range(1, 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()
if __name__ == '__main__':
root = Tk()
frame = Frame(root)
c = Button(root, text="add label", command=lambda: addNewLabel(frame))
c.grid(column=0, row=0)
frame.grid(row=1, column=1)
root.mainloop() |
sur cette exercice, un fois généré plusieurs frames, je souhaite supprimer, en une seule fois, les frames générées depuis un menu déroulant (donc depuis une autre def).
donc j'ai essayé cette solution
Code:
1 2 3 4
|
global frames
for widget in FrameCalc.winfo_children():
widget.destroy() |
ou celle-ci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
FrameCalc.event_add('<<DeclencheA>>', '<Button-1>') # Simulation sélection Item Recette
FrameCalc.after(0, lambda: FrameCalc.event_generate('<<DeclencheA>>'))
print("")
print("Liste ID frame générée : ", FrameCalc.winfo_children())
x = -1
for v in FrameCalc.winfo_children():
x = x + 1
print("ID frame générée : ", repr(v)) # Identification de la frame
print("Liste ID des widgets contenu dans la frame : ", v.winfo_children()) # Identification des widgets contenu dans la frame
print("ID widget Button contenu dans la frame : ", v.winfo_children()[1]) # Identification de widget Button contenu dans la frame
print("")
print("frames[x]", frames[x].get())
# v.winfo_children()[1].bind('<<DeclencheA>>', removeLabel(repr(v), frames[x]))
v.winfo_children()[1].bind('<<DeclencheA>>', selectItem(v.winfo_children()[1])) |
actuellement, il reste à réinitialiser la variable var qui me donne tu fils à retordre.
merci pour votre idée, orientation vers une solution