Python Tkinter: addressing Label-widget erstellt, indem die for-Schleife
Folgende ist mein Skript. Grundsätzlich wird es den Benutzer auffordern, die Eingabe einer Zahl in das Eingabefeld ein. Sobald der Benutzer eine Zahl eingeben und auf OK klicken, es wird Ihnen die Kombination von Etiketten+Knöpfe hängt von der Anzahl, die der Benutzer eingegeben in das Feld Eintrag.
from Tkinter import *
root=Tk()
sizex = 600
sizey = 400
posx = 0
posy = 0
root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))
def myClick():
myframe=Frame(root,width=400,height=300,bd=2,relief=GROOVE)
myframe.place(x=10,y=10)
x=myvalue.get()
value=int(x)
for i in range(value):
Mylabel=Label(myframe,text=" mytext "+str(i)).place(x=10,y=10+(30*i))
Button(myframe,text="Accept").place(x=70,y=10+(30*i))
mybutton=Button(root,text="OK",command=myClick)
mybutton.place(x=420,y=10)
myvalue=Entry(root)
myvalue.place(x=450,y=10)
root.mainloop()
Normalerweise, wenn ich ein label-widget, ich würde so etwas tun
mylabel=Label(root,text='mylabel')
mylabel.pack()
So, wenn ich mich ändern will den text von meinem label später kann ich einfach das machen, diese
mylabel.config(text='new text')
Aber jetzt, da ich mich mit for-Schleife erstellen, die alle Etiketten auf einmal, es ist trotzdem die Adresse der einzelnen Etiketten, nachdem die Etiketten erstellt wurde?
Zum Beispiel, der Benutzer eingegeben in '5' in das Feld Eintrag, und das Programm gibt mir 5 Marken + 5 Tasten. Ist sowieso für mich das ändern der Eigenschaften (dh, label.config(..)) von den einzelnen labels?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher! Nur machen Sie eine Liste von Etiketten, rufen Sie
place
auf jeden, und dann können Sie auf Sie später, und ändern Sie deren Werte. Etwa so:Beachten Sie auch! In der Zuordnung
Mylabel=Label(myframe,text=" mytext "+str(i)).place(x=10,y=10+(30*i))
im original-code, ist dieser Aufruf setztMylabel
Keine, da dieplace
Methode gibt Keine. Sie möchten, trennen Sie dieplace
Aufruf in einer eigenen Zeile, wie im obigen code.