Ergebnisausgabe Schleife in Label

Fragen zu Tkinter.
Antworten
Tobias74
User
Beiträge: 10
Registriert: Montag 4. Mai 2020, 20:36

Hallo, beschäftige mich grade mit den Möglichkeiten von Tkinter. Habe folgendes Problem. Ich möchte die Ergebnisse aus der Schleife in der Funktion in ein Label ausgeben. Wieso erfolgt hier in dem Beispiel in der Funktion nur die Ausgabe des letzten Wertes der Schleife? Gibt es eine elegantere Möglichkeit solche Ergebnisse untereinander für jeden Durchlauf auszugeben?
Vielen Dank

from tkinter import *
fenster = Tk()

fenster.geometry("400x300")
fenster.title("Zinsrechner")

def berechnen():
global k
k=float(kapital.get())
z=float(zins.get())
t=int(dauer.get())
for i in range(1,t+1):
k=k*(1+(z/100))
label_ergebnis=Label(fenster, text= "Kapital im "+ str(i) + " Jahr sind " + str(round(k,2))+ "EURO")
label_ergebnis.grid(row=4, column=0)

kapital =Entry(fenster, width=20)
kapital.grid(row=0, column=1)
zins= Entry(fenster, width=20)
zins.grid(row=1, column=1)
dauer = Entry(fenster, width=20)
dauer.grid(row=2, column=1)

label_kapital=Label(fenster, text="Anfangskapital", padx=30, pady=5)
label_kapital.grid(row=0, column=0, pady=5)
label_zins=Label(fenster, text="Zinssatz in %", padx=30, pady=5)
label_zins.grid(row=1, column=0,pady=5 )
label_dauer=Label(fenster, text="Anlagedauer in Jahren", padx=30, pady=5)
label_dauer.grid(row=2, column=0, pady=5)

button_berechnen=Button(fenster, text="berechnen", command=berechnen)
button_berechnen.grid(row=3, column=0, pady=40)

button_beenden=Button(fenster, text="beenden", command=fenster.destroy)
button_beenden.grid(row=3, column=1)

fenster.mainloop()
Benutzeravatar
__blackjack__
User
Beiträge: 14090
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tobias74: Wenn man viele Label alle in die selbe Gridzelle setzt, sind die halt alle übereinander und man sieht am Ende nur das oberste.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Tobias74
User
Beiträge: 10
Registriert: Montag 4. Mai 2020, 20:36

@blackjack: danke dir. habe grade noch ein bißchen rumprobiert und einfach in der Funktion immer eine neue Reihe in der Schleife eingefügt. "label_ergebnis.grid(row=i+3, column=0)"
Wahrscheinlich nicht die eleganteste Lösung, aber es funktioniert. Kannst du mir ggf. einen HInweis geben, wie ich automatisch einen Scrollbalken
im Fenster bekomme, wenn die Zeilen aus dem Bild laufen.
Vielen Dank und viele Grüße
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Tobias74,

Bitte vermeide Sternchenimporte!
Setze den Code zwischen die Code-Tags (das Feld </> anklicken) wenn Du erwartest, dass jemand deinen Code verstehen will.

Zum Scrollen; setz deine Graphik in ein Canvas, PanedWindow, oder gib die Ergebnisse in einer Listbox aus.

Gruss Peter
Antworten