berechnungen mit informationen aus eingabefeldern

Fragen zu Tkinter.
Antworten
GeeONE
User
Beiträge: 4
Registriert: Freitag 17. Oktober 2014, 14:59

hi,

als noob (sooooorrrryyyy) habe ich da mal so ein kleines projekt angefangen und habe diesbezueglich einmal ein paar fragen... vielleicht kann mir jemand hier helfen...

ich habe 4 eingabefelder erschaffen bei denen folgendes passieren soll...

wert aus feld eins (erwachsene personenanzahl) soll mit dem wert aus feld drei (preis fuer nen erwachsenen) multipliziert werden.
wert aus feld zwei (kinder anzahl) soll mit wert aus feld vier (preis fuers kind) multipliziert werden.

dann sollen diese beiden ergebnisse addiert werden und in dem fenster ausgegeben werden...

die felder und deren beschreibung habe ich ohne groessere probleme erschaffen koennen... bei den rechenfunktionen allerdings stosse ich jetzt auf meine grenzen...

wuerde mich ueber hilfe sehr freuen!

G
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Wie sieht denn dein bisheriger Code aus?
Das Leben ist wie ein Tennisball.
GeeONE
User
Beiträge: 4
Registriert: Freitag 17. Oktober 2014, 14:59

*schaem* ...strotzt bestimmt nur so vor fehlern...

Code: Alles auswählen

from tkinter import *

def berechnung():
    Adults=float(Apeople.get())
    Children=float(Cpeople.get())
    totalad=Adults*Aprice
    totalch=Children*Cprice
    totalprice=totalad+totalch
    labelresult=Label(fenster,text="TOTAL %.2f" %totalprice).grid(row=7, column=2)
    
    

fenster = Tk()
fenster.title("Calculator")
fenster.geometry("300x300")

Aprice = StringVar()
Cprice = StringVar()
Apeople = StringVar()
Cpeople = StringVar()

Adultsprice = Entry(fenster, textvariable=Aprice)
Adultsprice.pack()


label1 = Label(text="Price per Adult")
label1.pack()

Childrenprice = Entry(fenster, textvariable=Cprice)
Childrenprice.pack()


label2 = Label(text="Price per Child")
label2.pack()

Adultpeople = Entry(fenster, textvariable=Apeople)
Adultpeople.pack()


label3 = Label(text="How many Adults?")
label3.pack()

Children = Entry(fenster, textvariable=Cpeople)
Children.pack()


label4 = Label(text="How many Children?")
label4.pack()

label5 = Label(text="TOTAL")
label5.pack()

Calculate = Button(fenster, text="Calculate", command=berechnung)
Calculate.pack()
 

mainloop()
GeeONE
User
Beiträge: 4
Registriert: Freitag 17. Oktober 2014, 14:59

mag denn niemand einem armen kleinen noob helfen? *grins*
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

Der Fehler ist:
TypeError: unsupported operand type(s) for *: 'float' and 'StringVar'

in der Zeile totalad=Adults*Aprice

Da wolltest du ein float und StringVar multiplizieren, das ist nicht möglich, du musst StringVar als float umwandeln, wie du es eine zeile zuvor auch getan hast.

So kann es funitionieren:

Code: Alles auswählen

from tkinter import *
     
def berechnung():
        Adults = float(Apeople.get())
        Children = float(Cpeople.get())
        totalad = Adults * float(Aprice.get())
        totalch = Children * float(Cprice.get())
        totalprice = totalad + totalch
        result.set("TOTAL %.2f" %totalprice)

if __name__ == "__main__":
    fenster = Tk()
    fenster.title("Calculator")
    fenster.geometry("300x300")
     
    Aprice = StringVar()
    Cprice = StringVar()
    Apeople = StringVar()
    Cpeople = StringVar()
    result = StringVar()
     
    Adultsprice = Entry(fenster, textvariable=Aprice)
    Adultsprice.pack()
 
    label1 = Label(text="Price per Adult")
    label1.pack()
     
    Childrenprice = Entry(fenster, textvariable=Cprice)
    Childrenprice.pack()
     
    label2 = Label(text="Price per Child")
    label2.pack()
     
    Adultpeople = Entry(fenster, textvariable=Apeople)
    Adultpeople.pack()
     
    label3 = Label(text="How many Adults?")
    label3.pack()
     
    Children = Entry(fenster, textvariable=Cpeople)
    Children.pack()
 
    label4 = Label(text="How many Children?")
    label4.pack()
     
    label5 = Label(text="TOTAL")
    label5.pack()
     
    Calculate = Button(fenster, text="Calculate", command=berechnung)
    Calculate.pack()
     
    labelresult = Entry(fenster, textvariable=result)
    labelresult.pack()
     
    mainloop()
GeeONE
User
Beiträge: 4
Registriert: Freitag 17. Oktober 2014, 14:59

danke fuer deine hilfe!
Antworten