Seite 1 von 1

Zahlen eingeben Entry field

Verfasst: Dienstag 4. April 2017, 19:08
von neuron

Code: Alles auswählen

import Tkinter as tk

def button_action():
    i = float(entryfield.get())
    j = float(entryfield1.get())
    
    preis = i
    rabatt = j

    if (preis =="") and (rabatt == ""):
        welcome_label.config(text="Gebe bitte einen Wert ein!")
    

    else:    
        result =preis - preis/100*rabatt // muss irgendwie in string konvertiert werden
           
            
        
    
        welcome_label.config(text="Der neue preis ist " + result)

fenster = tk.Tk()
fenster.title(" Rabattrechner")
Lable1 = tk.Label(fenster,text = "Preis:")
Lable2 = tk.Label(fenster,text = "Prozent:")


entryfield=tk.Entry(fenster,bd=5,width=40)
entryfield1=tk.Entry(fenster,bd=5, width=40)
welcome_label = tk.Label(fenster)
exit_button = tk.Button(fenster, text= "Beenden",command=fenster.quit)
Lable1.pack()
Lable2.pack()
entryfield.pack()
entryfield1.pack()
welcome_label.pack()
exit_button.pack()
welcome_button = tk.Button(fenster,text = "Berechne", command = button_action)
welcome_button.pack()
fenster.mainloop()
Ich habe folgenden Code für einen Rabatt Rechner in python als Übung geschrieben, da ich vorher noch nie GUI programmiert habe.
Das Problem liegt wahrscheinlich in den verschiedenen Datentypen, da mit Entry ja eigentlich strings eingelesen werden. Ich möchte einen Rabatt rechner mit zwei entry Feldern schreiben, der mir als labeltext dann das ergebnis ausgibt. Bin dankbar für jeden tipp.
Vielen Dank im Voraus :)

Re: Zahlen eingeben Entry field

Verfasst: Dienstag 4. April 2017, 19:34
von Sirius3
@neuron: was ist denn nun Dein konkretes Problem?

Für was sind die Variablen i und j gut, wenn Du sie gleich anderen Variablen zuweist? Die If-Abfrage versucht eine Zahl mit einem String zu vergleichen, was nie erfolgreich sein wird. Die Umwandlung in einen String macht man am besten über format: »"Der neue preis ist {:.2f}".format(result)«

Re: Zahlen eingeben Entry field

Verfasst: Mittwoch 5. April 2017, 17:04
von neuron
Danke!
Jetzt funktionierts :)
Noch eine Frage: Wie kann ich es schreiben, dass das Fenster geschlossen wird, wenn ich das Programm beende und wie kann ich die if bedingung formulieren wenn eines der Felder leer ist und ein Wert eingegeben werden soll?

Re: Zahlen eingeben Entry field

Verfasst: Mittwoch 5. April 2017, 17:21
von BlackJack
@neuron: Das Fenster schliesst sich automatisch wenn das Programm endet, denn wenn das Fenster noch offen ist, kann sich das Programm ja noch nicht beendet haben.

Leere Felder sind keine Frage einer ``if``-Bedingung. Hier würde die Umwandlung eines leeren Feldes, oder eines das keine Darstellung einer Gleintkommazahl enthält, zu einer Ausnahme führen. Die kann man entsprechend mit ``try``/``except KonkreteAusnahme:`` behandeln.