Python Tkinter: face à l'Étiquette widget créé par boucle for
Voici mon script. Fondamentalement, il va demander à l'utilisateur de saisir un nombre dans la boîte de Saisie. Une fois que l'utilisateur d'entrer un nombre et cliquez sur OK, il vous donnera la combinaison d'Étiquettes+Boutons dépend du nombre que l'utilisateur a tapé dans la zone de Saisie.
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()
Normalement, quand je créer un label widget, je voudrais faire quelque chose comme ceci
mylabel=Label(root,text='mylabel')
mylabel.pack()
Donc quand je veux modifier le texte de mon label plus tard, je peux tout simplement faire ce
mylabel.config(text='new text')
Mais maintenant, depuis que je suis à l'aide de la boucle pour créer toutes les étiquettes à la fois, est-il de toute façon à l'adresse de la personne étiquettes d'après les étiquettes a été créé?
Par exemple, l'utilisateur a tapé à '5' dans la zone d'entrée et le programme va me donner 5 etiquettes + 5 boutons. Est-il de toute façon pour moi de changer les propriétés (c'est à dire, de l'étiquette.config (..), des étiquettes?
OriginalL'auteur Chris Aung | 2013-04-04
Vous devez vous connecter pour publier un commentaire.
Sûr! Il suffit de faire une liste d'étiquettes, appel
place
sur chacun d'eux, et vous pouvez y faire référence plus tard et de modifier leurs valeurs. Comme:Aussi remarque! Dans l'attribution
Mylabel=Label(myframe,text=" mytext "+str(i)).place(x=10,y=10+(30*i))
dans le code d'origine, qui appellent à des ensembles deMylabel
à Aucune, car l'place
méthode renvoie None. Vous voulez séparer lesplace
appel dans sa propre ligne, comme dans le code ci-dessus.J'ai juste compris le "si", comme un exemple de la façon dont vous pouvez définir l'étiquette de config valeurs plus loin dans votre code. Vous pouvez toujours utiliser une boucle for pour modifier les étiquettes, vous auriez juste besoin de garder toutes les étiquettes dans une liste et de les référencer dans votre boucle. Notez également que vous pouvez mettre dans un assurez-vous que l'utilisateur a entré une valeur raisonnable, et non 1000.
OriginalL'auteur twasbrillig