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

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

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

Beitragvon extreme16 » Dienstag 17. Juni 2008, 17:57

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
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Dienstag 17. Juni 2008, 19:12

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

Beitragvon numerix » Dienstag 17. Juni 2008, 19:18

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/

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder