Je voudrais coder le code suivant dans les boucles. Malheureusement, mes boucles ne fonctionnaient pas du tout. Quelqu'un pourrait-il m'aider à obtenir le stringvar, les étiquettes et les jetons dans une boucle pour ou tandis que la boucle?
3 Réponses :
Voici un petit exemple. Votre problème peut avoir à voir avec la nécessité de séparer la méthode de la création de widget, sinon vous perdez la référence au widget.
Votre code a le même problème de ne pas séparer tk.button (...) code> et
pack () code> sur
print_myvars_button code>.
@ ACW1668 Vous avez raison, stupide moi. Eh bien, ce n'est pas vraiment un problème, vous pouvez le faire si vous n'avez pas besoin de conserver la référence du widget, qui était le cas, mais comme un exemple était probablement contradictoire. Just édité, merci.
C'est une fonction pratique appelée Puisque vous alignez vos étiquettes et vos entrées parallèles Côté, vous pouvez réellement faire en une seule fois en utilisant énumérer code> qui fonctionne particulièrement bien lorsque vous souhaitez
grille code> une série de widgets. Vous pouvez le lire ici .
zip code> et
énumérer code> ensemble dans A pour boucle: p>
import tkinter
root = tkinter.Tk()
airp_elev = tkinter.StringVar()
QNH = tkinter.StringVar()
OAT = tkinter.StringVar()
all_labels = ("Airport elevation [ft]","QNH [hPa]","Ourside air temperature [°C]") #group your labels together
all_var = (airp_elev,QNH,OAT) #group your vars together
L0 = tkinter.Label(root, text = "Welcome to the density altutude calculator!", fg = "red").grid(row = 0, column = 1, sticky = "W", padx = 10, pady = 10)
for num,i in enumerate(zip(all_labels,all_var),1): #enumerate through both lists
label, entry = i #unpack the tuple i into two easy to read variables
tkinter.Label(root,text=label).grid(row=num,column=0,sticky = "W", padx = 10, pady = 10)
tkinter.Entry(root, textvariable=entry, bd=5).grid(row=num, column=1)
tkinter.Button(root,text="Print result",command=lambda: print(airp_elev.get(),QNH.get(),OAT.get())).grid(row=4,column=0,columnspan=2)
root.mainloop()
Je voulais vous montrer mon code. C'est une calculatrice d'altitude de densité, le calcul de l'altitude de densité est principalement utilisé dans l'aviation.
import tkinter root = tkinter.Tk() root.title("Density altitude calculator") root.geometry("500x275") airp_elev = tkinter.StringVar() QNH = tkinter.StringVar() OAT = tkinter.StringVar() all_labels = ("Airport elevation [ft]","QNH [hPa]","Ourside air temperature [°C]") #group your labels together all_var = (airp_elev,QNH,OAT) #group your vars together L0 = tkinter.Label(root, text = "Welcome to the density altutude calculator!", fg = "red").grid(row = 0, column = 1, sticky = "W", padx = 10, pady = 10) def calculateda(): ad_elev = float(airp_elev.get()) pres = float(QNH.get()) temp = float(OAT.get()) QNE = 1013 isa_st = 15 ad = ((QNE - pres) * 28) pa = ad_elev + ad st_pa = isa_st - (pa / 1000 * 2) hd = 120 * (temp - st_pa) da = round(pa + hd) labelresult = tkinter.Label(root, text = "The density altitude is: %.d ft" % da).grid(row = 7, column = 1, padx = 10, pady = 10) return for num,i in enumerate(zip(all_labels, all_var),1): #enumerate through both lists label, entry = i #unpack the tuple i into two easy to read variables tkinter.Label(root, text = label).grid(row = num, column =0 , sticky = "W", padx = 10, pady = 10) tkinter.Entry(root, textvariable = entry, bd = 5).grid(row = num, column = 1) b1 = tkinter.Button(root, text = "Calculate density altitude", command = calculateda).grid(row = 4, column = 1, padx = 10, pady = 10) root.mainloop()
Quelles boucles? Donnez un exemple de reproductible minimal .
Bonjour! Pourriez-vous s'il vous plaît donner plus de contexte? Pourquoi avez-vous besoin d'une boucle? Que veux-tu accomplir? Sans cela, il est difficile de vous aider.