Die Variable wird immer auf 0 zurück gesetzt.

Fragen zu Tkinter.
Antworten
DeWallo
User
Beiträge: 1
Registriert: Mittwoch 18. April 2018, 15:57

Code: Alles auswählen

from tkinter import*

def weiter():
    z=0
    h=float(geld.get())
    p= 1.2
    z=z+h
    
    while z<p:
           
    
        
        print(h)
        
        z=z+h
        fenster.mainloop()
    gut=Label(fenster,text="genug Geld")
    gut.pack()

def colagetraenk():
    
    p=1.2
    
    ged.pack()
    preis.config(text=p)
    geld.pack()
    bezahlen.pack()
    preis.pack()
    
    
fenster=Tk()
fenster.geometry("600x600")
fenster.title("Automatdeluxe")

cola=Button(fenster, text="Cola",command=colagetraenk)
ged=Button(fenster,text="Bezahlen",command=weiter)

preis=Label(fenster,text="")
bezahlen=Label(fenster,text="Gib mir dein Geld!!! Ich brauche->")

geld =Entry(fenster)

cola.pack()




Die Variable setzt sich wenn man weniger bezahlt immer auf 0 wenn jemand weiß woran das liegt wäre echt nett.
PS: Ich benutze das Forum zum ersten mal also sorry wenn das nich gut geschrieben ist
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@DeWallo: das Programm ist unvollständig und funktioniert so auch nicht. GUI-Programmierung ist ereignisgesteuert. Es darf nur ein `mainloop`-Aufruf geben, und der steht ganz am Ende des Programms. Ein Ereignis kommt (Knopf gedrückt) und verarbeitet. Daher dürfen keine langdauernden Schleifen in der Ereignisverarbeitung vorkommen. Du hast hier sogar so etwas wie einen rekursiven Aufruf. Es sollten auch alle Elemente vor Beginn der Ereignisschleife schon existieren und nur der Inhalt danach noch geändert werden. Das pack und Label in Deinen Ereignisfunktionen hat dort auch nichts zu suchen. Dann fehlt mir noch irgendwo ein Label, wo drinsteht, wieviel denn schon gezahlt worden ist. Ist bei Dir im Moment nur eine lokale Variable `z`, die auch bei jedem rekursiven Aufruf wieder auf 0 gesetzt wird.
Antworten