Labels und Entrys mit Schleifen + Tasten binden in tkinter
Verfasst: Montag 18. Februar 2019, 18:02
Hallo zusammen
Ich bin neu hier in diesem Forum und hoffe ich habe mein anliegen im richtigen Bereich platziert.
Für mein Problem habe ich viel gegoogelt leider hat es mir nichts gebracht. Hoffe Ihr könnt mir weiter helfen
Ich habe folgendes Programm zur Berechnung der Dichtehöhe geschrieben, dies Funktioniert so auch, ist einfach nicht schön und ich möchte es verbessern:
Ich wollte die Labels mittels dict und for Schleife schöner Programmieren:
Vorher:
Nachher:
Die Entrys wollte ich mittels Liste und for Schleife schöner Programmieren:
Vorher:
Nachher:
Und den Button b1 wollte ich wie folgt an die Entertaste binden:
Nun ist es leider so, dass keine meiner "Verbesserungen resp. verschönerungen" funktioniert haben. Könntet Ihr mir sagen was ich falsch mache? Überlegungsfehler oder so? Stehe echt auf dem Schlauch.
Falls Ihr sonst noch verbesserungspotential seht wäre ich euch sehr dankbar für eure Hilfe.
Besten Dank schon jetzt für eure Hilfe.
Liebe Grüsse
Kevin
Ich bin neu hier in diesem Forum und hoffe ich habe mein anliegen im richtigen Bereich platziert.
Für mein Problem habe ich viel gegoogelt leider hat es mir nichts gebracht. Hoffe Ihr könnt mir weiter helfen
Ich habe folgendes Programm zur Berechnung der Dichtehöhe geschrieben, dies Funktioniert so auch, ist einfach nicht schön und ich möchte es verbessern:
Code: Alles auswählen
import tkinter
root = tkinter.Tk()
root.title("Density altitude calculator")
root.geometry("500x275")
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 = round(isa_st - (pa / 1000 * 2),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
L0 = tkinter.Label(root, text = "Welcome to the density altutude calculator!", fg = "red").grid(row = 0, column = 1, sticky = "W", padx = 10, pady = 10)
L1 = tkinter.Label(root, text = "Airport elevation [ft]").grid(row = 1, column = 0, sticky = "W", padx = 10, pady = 10)
L2 = tkinter.Label(root, text = "QNH [hPa]").grid(row = 2, column = 0, sticky = "W", padx = 10, pady = 10)
L3 = tkinter.Label(root, text = "Ourside air temperature [°C]").grid(row = 3, column = 0, sticky = "W", padx = 10, pady = 10)
airp_elev = tkinter.StringVar()
QNH = tkinter.StringVar()
OAT = tkinter.StringVar()
E1 = tkinter.Entry(root, textvariable = airp_elev, bd = 5).grid(row = 1, column = 1)
E2 = tkinter.Entry(root, textvariable = QNH, bd = 5).grid(row = 2, column = 1)
E3 = tkinter.Entry(root, textvariable = OAT, bd = 5).grid(row = 3, column = 1)
b1 = tkinter.Button(root, text = "Calculate density altitude", command = calculateda).grid(row = 4, column = 1, padx = 10, pady = 10)
root.bind("<Return>", calculateda)
root.mainloop()
Vorher:
Code: Alles auswählen
L0 = tkinter.Label(root, text = "Welcome to the density altutude calculator!", fg = "red").grid(row = 0, column = 1, sticky = "W", padx = 10, pady = 10)
L1 = tkinter.Label(root, text = "Airport elevation [ft]").grid(row = 1, column = 0, sticky = "W", padx = 10, pady = 10)
L2 = tkinter.Label(root, text = "QNH [hPa]").grid(row = 2, column = 0, sticky = "W", padx = 10, pady = 10)
L3 = tkinter.Label(root, text = "Ourside air temperature [°C]").grid(row = 3, column = 0, sticky = "W", padx = 10, pady = 10)
Code: Alles auswählen
labels = {"Airport elevation [ft]", "QNH [hPa]", "Outside air temperature [°C]"}
for i in labels:
l = tkinter.Label(root, text = i + 1)
l.grid(row = i + 1, column = 0, sticky = "W", padx = 10, pady = 10)
Vorher:
Code: Alles auswählen
airp_elev = tkinter.StringVar()
QNH = tkinter.StringVar()
OAT = tkinter.StringVar()
E1 = tkinter.Entry(root, textvariable = airp_elev, bd = 5).grid(row = 1, column = 1)
E2 = tkinter.Entry(root, textvariable = QNH, bd = 5).grid(row = 2, column = 1)
E3 = tkinter.Entry(root, textvariable = OAT, bd = 5).grid(row = 3, column = 1)
Code: Alles auswählen
entrys = tkinter.StringVar([airp_elev, QNH, OAT])
for e in entrys:
e = tkinter.Entry(root, textvariable = e + 1, bd = 5)
e.grid(row = e + 1, column = 1)
Code: Alles auswählen
b1 = tkinter.Button(root, text = "Calculate density altitude", command = calculateda).grid(row = 4, column = 1, padx = 10, pady = 10)
b1.bind("<Return>", calculateda)
Falls Ihr sonst noch verbesserungspotential seht wäre ich euch sehr dankbar für eure Hilfe.
Besten Dank schon jetzt für eure Hilfe.
Liebe Grüsse
Kevin