2016-04-18 5 views
1

Ich arbeite an meinem letzten Projekt für meine Intro to Programming-Kurse und habe die schwierigste Zeit mit Tkinter und Python zu arbeiten.Eine Nummer aus Entry holen und Berechnungen mit Tkinter durchführen

Hier ist meine Aufgabe: Lassen Sie einen Benutzer ihr Einkommen von ihrem Gehaltsscheck eingeben. Das Programm wird dann die folgenden Berechnungen durchführen: Was sind 60% ihres Einkommens für Ausgaben, was ist 10% für BEIDE kurzfristige und langfristige Einsparungen und was ist 20% ihres Gehalts für schuldfreie Ausgaben?

Sobald das Programm die Berechnungen abgeschlossen hat, zeigt es alle diese Berechnungen an, damit der Benutzer die entsprechenden Übertragungen mit seinen Konten vornehmen kann. Hier

ist der Code, den ich derzeit haben:

from tkinter import * 
from tkinter import ttk 

def calculate(*args): 
    try: 
     value = float(income.get()) 
     expenses.set(value * .60) 
     shortSavings.set(value * .10) 
     longSavings.set(value * .10) 
     guiltFree.set(value * .20) 

    except ValueError: 
     pass 

root = Tk() 
root.title("Monthly Finance Calculater") 

mainframe = ttk.Frame(root, padding="3 3 12 12") 
mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
mainframe.columnconfigure(0, weight=1) 
mainframe.rowconfigure(0, weight=1) 

income = StringVar() 
expenses = StringVar() 
shortSavings = StringVar() 
longSavings = StringVar() 
guiltFree = StringVar() 

income_entry = ttk.Entry(mainframe, width=7, textvariable=income) 
income_entry.grid(column=2, row=1, sticky=(W, E)) 

expenses = ttk.Entry(mainframe, width=7, textvariable=expenses) 
expenses.grid(column=2, row=1, sticky=(W, E)) 

ttk.Label(mainframe, textvariable=income).grid(column=2, row=2, sticky=(W, E)) 
ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=3, row=3, sticky=W) 

income_entry.focus() 
root.bind('<Return>', calculate) 

root.mainloop() 

Ich habe seit Tagen gesucht und ich bin ganz fest. Ich möchte nicht, dass dies für mich erledigt wird, aber ich könnte wirklich einige Hinweise und Ratschläge dazu verwenden, wie dies mit Tkinter in einer GUI funktioniert.

+0

Wie bist du festgefahren? Wozu brauchst du Hilfe? –

+0

Ich kann das nicht zur Arbeit lol ... – DillonCarter

+0

_why_? Welches Problem hast du? Stürzt es ab? Fallen die Berechnungen falsch aus? Sie müssen spezifisch sein. Fragen des Formulars "Warum funktioniert mein Code nicht?" sind Off-Thema hier. –

Antwort

0

Soweit ich sehen kann, ist, dass:

income_entry = ttk.Entry(mainframe, width=7, textvariable=income) 
income_entry.grid(column=2, row=1, sticky=(W, E)) 

und

expenses = ttk.Entry(mainframe, width=7, textvariable=expenses) 
expenses.grid(column=2, row=0, sticky=(W, E)) 

auf der gleichen Spalte und Zeile sind, was bedeutet, dass man nicht sichtbar ist, um eines der beiden ändern andere Zeile, so dass beide Eingabefelder angezeigt werden.

Dies könnte lösen, warum Sie nichts sehen, aber ich bin mir nicht sicher, was Sie damit meinen.

1

Ein Problem wurde bereits von Max erwähnt. Das zweite Problem ist dieses:

except ValueError: 
    pass 

Es ist klar, warum Sie nichts erhalten, wenn Sie eine Ausnahme bestehen. Verwenden Sie mindestens einen Druck, so dass Sie die Fehler in der Konsole wird angezeigt:

except Exception as ex: 
    print(ex) 

Das letzte wirkliche Problem, das ich sehe, ist, dass Sie die Variable expenses zweimal verwenden! Erstmals als StringVar() und das zweite Mal als Entry. Am Ende hast du keine StringVar, weil du sie überschreibst. Denken Sie auch daran, Ihre Einträge zu beschriften, weil der Benutzer noch nicht weiß, was er dort eingibt. Außerdem lernen Sie, wie Sie den Debugger in Eclipse verwenden, es ist viel einfacher als Sie denken. So können Sie die Fehler selbst finden. Ich wünsche Ihnen viel Glück bei Ihrem Projekt.

Verwandte Themen