Ausgabe Fehlerhaft

Fragen zu Tkinter.
Antworten
Levay87
User
Beiträge: 4
Registriert: Mittwoch 18. September 2013, 22:00

Ich möchte ein Programm schreiben, welches mir meine Arbeitszeit ausrechnet. Leider funktioniert meine Ausgabe nicht.
Bitte um Hilfe!

Code: Alles auswählen

from Tkinter import *
import tkFileDialog

window = Tk()
window.wm_title('Arbeitszeitverwalter')
window.minsize(600,800)


def save():
    saved = Label(master=window, text='Daten wurden gespeichert!')                  
    saved.pack()
    
    Datum_Tag_Eingabe = IntVar()
    Datum_Monat_Eingabe = IntVar()
    Datum_Jahr_Eingabe = IntVar()
    Startzeit_Stunde_Eingabe = IntVar()
    Startzeit_Minute_Eingabe = IntVar()
    Endzeit_Stunde_Eingabe = IntVar()
    Endzeit_Minute_Eingabe = IntVar()

   
Datum_Tag = Label(master=window, text='Datum (Tag)')
Datum_Tag_Eingabe = Entry(master=window)
Datum_Monat = Label(master=window, text='Datum (Montat)')
Datum_Monat_Eingabe = Entry(master=window)
Datum_Jahr = Label(master=window, text='Datum (Jahr)')
Datum_Jahr_Eingabe = Entry(master=window)
Startzeit_Stunde = Label(master=window, text='Starzeit (Stunde)')
Startzeit_Stunde_Eingabe = Entry(master=window)
Startzeit_Minute = Label(master=window, text='Startzeit (Minute)')
Startzeit_Minute_Eingabe = Entry(master=window)
Endzeit_Stunde = Label(master=window, text='Endzeit (Stunde)')
Endzeit_Stunde_Eingabe = Entry(master=window)
Endzeit_Minute = Label(master=window, text='Endzeit (Minute)')
Endzeit_Minute_Eingabe = Entry(master=window)
ok = Button(master=window, text='Ok', command=save)

a = Startzeit_Stunde_Eingabe.get() 
b = Startzeit_Minute_Eingabe.get() 
c = Endzeit_Stunde_Eingabe.get() 
d = Endzeit_Minute_Eingabe.get()

def Arbeitszeit():
    arbeitszeit = 86400000 - a*3600000 + c*3600000 + d*60000

 
    print "Arbeitszeit; ", Arbeitszeit

Datum_Tag.pack()
Datum_Tag_Eingabe.pack()
Datum_Monat.pack()
Datum_Monat_Eingabe.pack()
Datum_Jahr.pack()
Datum_Jahr_Eingabe.pack()
Startzeit_Stunde.pack()
Startzeit_Stunde_Eingabe.pack()
Startzeit_Minute.pack()
Startzeit_Minute_Eingabe.pack()
Endzeit_Stunde.pack()
Endzeit_Stunde_Eingabe.pack()
Endzeit_Minute.pack()
Endzeit_Minute_Eingabe.pack()
ok.pack()

window.mainloop()
Zuletzt geändert von Anonymous am Mittwoch 18. September 2013, 22:22, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Sirius3
User
Beiträge: 18294
Registriert: Sonntag 21. Oktober 2012, 17:20

@Levay87: »funktioniert nicht« ist keine gute Fehlerbeschreibung
Was ist die Ausgabe? was erwartest Du? gibt es eine Fehlermeldung?
BlackJack

@Levay87: Das kann so auch nicht funktionieren. Zu dem Zeitpunkt wo `a` bis `d` Werte zugewiesen werden hatte der Benutzer ja noch gar keine Chance irgend etwas einzugeben. Das kann er erst machen wenn ``window.mainloop()`` ausgeführt wird, weil erst dann die GUI aktiv ist und Eingaben entgegennimmt. Zudem werden `a` bis `d` an Zeichenketten gebunden. Das heisst selbst wenn da Benutzereingaben dran gebunden würden, könnte man damit nicht sinnvoll rechnen.

Die Funktion zum ausrechnen der Arbeitszeit wird ausserdem nirgends aufgerufen. Und in der Funktion wird dann am Ende *die Funktion* ausgegeben und mit `arbeitszeit` wird gar nichts gemacht. Python unterscheidet Gross- und Kleinschreibung. `Arbeitszeit` ist etwas anderes als `arbeitszeit`. Funktionen werden ausserdem normalerweise nach Tätigkeiten benannt. Dann kann man sie auch einfacher von anderen Werten wie der berechneten `arbeitszeit` unterscheiden. Einbuchstabige Namen sollte man nicht vergeben, weil die, mit wenigen Ausnahmen, dem Leser nichts über die Werte verraten, die an die Namen gebunden sind. Genau das wäre aber der Zweck von Namen. Zu Namenskonventionen lohnt sich ein Blick in den Style Guide for Python Code.

Ich denke Du solltest erst einmal die Grundlagen von Python lernen. Erst wenn man bis einschliesslich objektorientierter Programmierung (OOP) gekommen ist, kann man IMHO sinnvoll GUI-Programme schreiben.
Antworten