Ein großes Problem ---- Entry-feld überprüfen, aber wie????

Fragen zu Tkinter.
Antworten
extreme16
User
Beiträge: 8
Registriert: Dienstag 17. Juni 2008, 17:49

Hallo alle zusammen,
ich habe folgendes Problem:
Meine Aufgabe ist es ein Eurorechner (Dollar-Euro) zu bauen (Benutzeroberfläche).
Doch genau vor dem Ziel muss ich resignieren, denn ich komme am Ende nicht mehr weiter.
Die Aufgabe bzw. den Befehl, die bzw den ich nicht lösen/wissen kann ist folgende/r:
Es gibts 2 Entryfelder. Einmal für Dollar und einmal für Euro. Die Bedingung lautet, dass wenn das Entryfeld von Euro leer ist, soll eine das Entryfeld vom Dollar gefüllt sein mit einer Zahl ---> somit rechnet er den Dollarkurs in Euro um. Und anders rum natürlich auch (Wenn Das Entryfeld vom dollar leer ist und das Entryfeld vom Euro gefüllt ist soll der Euro in Dollar umgerechnet werden) Python soll also überprüfen ob das Entryfeld leer ist.
Doch mit meiner und folgendener Pythonanweisung funktioniert das nicht:

Code: Alles auswählen

from Tkinter import *

#Aufgabe a)
class EuroRechner():
    def __init__(self):
        self.win=Tk()
        self.ergebnis=0.00
        self.ueberschrift=Label(text="Euro-Rechner")
        self.ueberschrift.grid(row=0,columnspan=3)
        self.text1=Label(text="Dollar")
        self.text1.grid(row=1, column=0)
        self.text2=Label(text="Euro")
        self.text2.grid(row=1,column=2)
        self.text3=Label(text="")
        self.text3.grid(row=3,column=2)
        self.text4=Label(text="")
        self.text4.grid(row=3,columnspan=3)
        self.eingabe1=Entry(width=10)
        self.eingabe1.grid(row=2,column=0)
        self.eingabe2=Entry(width=10)
        self.eingabe2.grid(row=2,column=2)
        self.knopf1=Button(text="Berechne", command=self.berechnen)
        self.knopf1.grid(row=4,column=0)
        self.knopf2=Button(text="Loesche", command=self.loesche)
        self.knopf2.grid(row=4,column=1)
        self.knopf3=Button(text="Ende", command=self.win.destroy)
        self.knopf3.grid(row=4,column=2,)

#Aufgabe b)
    def loesche (self):
        self.eingabe1.delete(0,END)
        self.eingabe2.delete(0,END)

    def berechnen (self):
        if self.eingabe1 != "":
            self.dollar=float(self.eingabe1.get())
            self.ergebnis=0.64*self.dollar
            self.eingabe2.insert('end',str(self.ergebnis))
        elif self.eingabe2 != "":
            self.euro=float(self.eingabe2.get())
            self.ergebnis=1.5635*self.euro
            self.eingabe1.insert('end',str(self.ergebnis))






EuroRechner()
Vielen Dank für die Hilfe und Aufmerksamkeit
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

1. Bitte keine Leerzeichen vor Klammern, siehe auch PEP8 usw ...

2. Wenn du eine Klasse baust, dann solltest du die auch Instanziieren ;)
D.h :

Code: Alles auswählen

rechner = EuroRechner()
3. Bei den If-Verzweigungen: Benutze Else statt Elif, wenn du nur zwei Fälle hast und unterscheide für deine 2. Eingabe in einem extra If-Statement.
Falls du zwei fälle gleichzeitig brauchst, dann benutze ein ``and'' dazwischen.

Deine Bedingungen scheinen mir zwar zu stimmen, allerdings würd ich von dem 'Ausnahmefall' ausgehen, dass das Feld eben leer ist.

Zu Tkinter kann ich dir nu leider nicht viel sagen :roll:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Die Bedingungen in Zeile 35/39 sind falsch.
Entry-Widgets haben eine get()-Methode, mit der du den Inhalt abfragen kannst (und die benutzt du an anderer Stelle auch selbst!).

Umfangreiche Doku zu Tkinter: http://www.effbot.org/tkinterbook/
Antworten