gewählten Wert einer Combobox zurückbekommen

Fragen zu Tkinter.
Antworten
xela127
User
Beiträge: 2
Registriert: Freitag 29. Dezember 2006, 11:49

Freitag 29. Dezember 2006, 14:27

Hallo!:D

Vorerst: Ich bin ein absoluter "Frischling", sowohl was das Programmieren mit Python angeht, als auch in diesem Forum!

Ich versuche ein Programm zu erstellen, genauer gesagt einen Währungsrechner. Es kann ein Geldbetrag angegeben werden, der umgerechnet werden soll. Anschließend muss der User natürlich auswählen, in welcher Währung der angegebene Bertrag ist und in welche Währung dieser umgerechnet werden soll. Ich habe mir 5 verschiedene Währungen ausgesucht, die ich zur Auswahl stelle. Dabei habe ich mich für eine ComboBox entschieden, die mir jedoch leichte Probleme bereitet!

Neben dem Geldbetrag der umgerechnet werden soll benötigt die rechnung ja auch noch den entsprechenden kurs. Den kurs möchte ich aus den beiden vom benutzer ausgewählten währungen ableiten, das heißt wenn 'euro' und 'us dollar' ausgewählt sind soll halt der feste kurs 1,31 benutzt werden.

Ehrlich gesagt habe ich auch noch keinen so richtigen schimmer wie ich das dann bewerkstelligen kann, aber mein erstes Problem ist, dass ich nicht weiß, wie man die gewählte option (wert) aus der combobox heraus bekommt!

Wird das auch mit get() gemacht oder cget() - was muss dann in die klammern???

Ich hoffe ihr könnt mir helfen, habt ihr verbesserungsvorschläge oder tipps, ideen etc.!?

DANKE im voraus!!!

Hier mein Code:

Code: Alles auswählen

from Tkinter import *
from Tix import *           #fuer bestimmte Widgets (z.B.: ComboBox) notwendig
from waehrungsrechner import *

def kursermittlung():
    w1=waehrung1.cget() #???
    w2=waehrung2.cget() #???

    Ergebnis['text']=

def rechne():
   pa1=geldbetrag.get()
   pa2=kursermittlung()
   Ergebnis['text'] = rechnen(pa1, pa2)
   


schrift = 'arial 10 bold'
hauptfenster  = Tk ()
hauptfenster.title ("Waehrungsrechner")

fenster1     = Frame (hauptfenster)#ein Rahmen fuer graph. Elemente
fenster1.pack ()
fenster2     = Frame (hauptfenster)
fenster2.pack ()
fenster3     = Frame (hauptfenster)
fenster3.pack ()
fenster4     = Frame (hauptfenster)
fenster4.pack ()
fenster5     = Frame (hauptfenster)
fenster5.pack ()

text1 = Label(fenster1, text = 'Geben Sie den Geldbetrag ein, den sie umrechnen moechten:',font= schrift)
geldbetrag = Entry (fenster1)
geldbetrag.insert(0,'0')                         #der Defaultwert beim Programmstart
text1.pack (side="left")
geldbetrag.pack (side="right")

text2 = Label(fenster2, text = 'Waehlen Sie, in welcher Waehrung dieser Betrag ist!',font= schrift)
waehrung1 = ComboBox(fenster2,editable=True)
waehrung1.insert(1, "Euro")
waehrung1.insert(2, "US Dollar")
waehrung1.insert(3, "NZ Dollar")
waehrung1.insert(4, "UK Pound")
waehrung1.insert(5, "Yen")
waehrung1.pack(side="right")
text2.pack (side="left")

text3 = Label(fenster3, text = 'In welche Waehrung wollen Sie den Geldbetrag umrechnen?',font= schrift)
waehrung2 = ComboBox (fenster3, editable=True)
waehrung2.insert(1, "Euro")
waehrung2.insert(2, "US Dollar")
waehrung2.insert(3, "NZ Dollar")
waehrung2.insert(4, "UK Pound")
waehrung2.insert(5, "Yen")
text3.pack (side="left")
waehrung2.pack (side="right")

text4 = Label(fenster4, text = 'Geben Sie den Umrechnungskurs ein! (optional)',font= schrift)
kurs = Entry (fenster4)
kurs.insert(0,'0')
text4.pack (side="left")
kurs.pack (side="right")

text5 = Label(fenster5,font= schrift, text = 'Ergebnis:')
Ergebnis = Label (fenster5, font= schrift,text= '')
text5.pack(side="left")
Ergebnis.pack (side="left")


Rechenknopf = Button (hauptfenster, text="Berechnen!",font= schrift,width= 12,
                       command = rechne)
Rechenknopf.pack(side="right")
Endeknopf = Button (hauptfenster, text= "Beenden",font= schrift,width= 12,
                    command = hauptfenster.destroy)
Endeknopf.pack(side="right")

Code: Alles auswählen

def kursermittlung():

    #????
    #????

def rechnen(par1,par2):
    try:
        par1=float(par1)
        par2=float(par2)
        ergegbis= str(par1*par2)
        return ergebnis
    except:
        ergebnis= 'Sie haben eine falsche Eingabe vorgenommen!'
        return ergebnis
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Freitag 29. Dezember 2006, 19:59

Hallo,

ich habe mich bis vorhin auch noch nicht mit Tix beschäftigt - aber eine Lösung gefunden. Die Combobox besteht aus mehreren Widgets. Ich habe das Entry, in dem der ausgewählte Wert angezeigt wird, ausgelesen. Die Umrechnungskurse habe ich in ein Dictionary gespeichert. Anhand der ausgewählten Währungen wird ein Schlüssel für das Dictionary erstellt. Damit kannst du den Umrechnungskurs ermitten.

Code: Alles auswählen

from Tkinter import *
from Tix import *           #fuer bestimmte Widgets (z.B.: ComboBox) notwendig
#from waehrungsrechner import *

def kursermittlung():
    w1=waehrung1.cget() #???
    w2=waehrung2.cget() #???

    Ergebnis['text']= ''

def rechne():
    pa1=geldbetrag.get()
    pa2=kursermittlung()
    Ergebnis['text'] = rechnen(pa1, pa2)

def kursermittlung():
    w1 = waehrung1.entry.get()
    w2 = waehrung2.entry.get()
    k = ukurs['%s%s'%(w1, w2)]
    kurs.delete(0, END)
    kurs.insert(END, k)
    return k

def rechnen(par1,par2):
    try:
        par1=float(par1)
        par2=float(par2)
        ergebnis= str(par1*par2)
        return ergebnis
    except:
        ergebnis= 'Sie haben eine falsche Eingabe vorgenommen!'
        return ergebnis  
    
ukurs = {'EuroUS Dollar':1.31, 'EuroUK Pound':0.6}

schrift = 'arial 10 bold'
hauptfenster  = Tk ()
hauptfenster.title ("Waehrungsrechner")

fenster1     = Frame (hauptfenster)#ein Rahmen fuer graph. Elemente
fenster1.pack ()
fenster2     = Frame (hauptfenster)
fenster2.pack ()
fenster3     = Frame (hauptfenster)
fenster3.pack ()
fenster4     = Frame (hauptfenster)
fenster4.pack ()
fenster5     = Frame (hauptfenster)
fenster5.pack ()

text1 = Label(fenster1, text = 'Geben Sie den Geldbetrag ein, den sie umrechnen moechten:',font= schrift)
geldbetrag = Entry (fenster1)
geldbetrag.insert(0,'0')                         #der Defaultwert beim Programmstart
text1.pack (side="left")
geldbetrag.pack (side="right")

text2 = Label(fenster2, text = 'Waehlen Sie, in welcher Waehrung dieser Betrag ist!',font= schrift)
waehrung1 = ComboBox(fenster2,editable=True)
waehrung1.insert(1, "Euro")
waehrung1.insert(2, "US Dollar")
waehrung1.insert(3, "NZ Dollar")
waehrung1.insert(4, "UK Pound")
waehrung1.insert(5, "Yen")
waehrung1.pack(side="right")
text2.pack (side="left")

text3 = Label(fenster3, text = 'In welche Waehrung wollen Sie den Geldbetrag umrechnen?',font= schrift)
waehrung2 = ComboBox (fenster3, editable=True)
waehrung2.insert(1, "Euro")
waehrung2.insert(2, "US Dollar")
waehrung2.insert(4, "UK Pound")
waehrung2.insert(5, "Yen")
text3.pack (side="left")
waehrung2.pack (side="right")

text4 = Label(fenster4, text = 'Geben Sie den Umrechnungskurs ein! (optional)',font= schrift)
kurs = Entry (fenster4)
kurs.insert(0,'0')
text4.pack (side="left")
kurs.pack (side="right")

text5 = Label(fenster5,font= schrift, text = 'Ergebnis:')
Ergebnis = Label (fenster5, font= schrift,text= '')
text5.pack(side="left")
Ergebnis.pack (side="left")


Rechenknopf = Button (hauptfenster, text="Berechnen!",font= schrift,width= 12,
                       command = rechne)
Rechenknopf.pack(side="right")
Endeknopf = Button (hauptfenster, text= "Beenden",font= schrift,width= 12,
                    command = hauptfenster.destroy)
Endeknopf.pack(side="right")
hauptfenster.mainloop()
Bei mir hat das Beispiel funktioniert.

Stephan
xela127
User
Beiträge: 2
Registriert: Freitag 29. Dezember 2006, 11:49

Samstag 30. Dezember 2006, 13:13

WOW! :shock:

Ich bin sprachlos ... ich weiß gar nicht was ich sagen soll außer:

DANKE! :D :wink:

Das hat mein Problem gelöst und es fünktioniert wirklich sehr gut!

Nochmals vielen Dank!

Hier der fertige Code, wer möchte kanns gerne probieren! :wink:

ENJOY IT!

Code: Alles auswählen

# WAEHRUNGSRECHNER #

'''
erstellt am:         30.12.2006
Autor:               Alexander Penack
special thanks to:   Stephan - Python Poweruser aus Sachsen
'''

#Head#

from Tkinter import *
from Tix import *           #fuer bestimmte Widgets (z.B.: ComboBox) notwendig


#Verarbeitung#

def kursermittlung():
    w1 = waehrung1.entry.get()
    w2 = waehrung2.entry.get()
    try:
        k = ukurs['%s%s'%(w1, w2)]
        kurs.delete(0, END)
        kurs.insert(END, k)
        return k
    except:
        k = 'abc'
        return k

def rechne():
    pa1=geldbetrag.get()
    pa2=kursermittlung()
    Ergebnis['text'] = rechnen(pa1, pa2)

#Dictionary mit Umrechnungskursen#

ukurs= {'EuroEuro':1,'EuroUS Dollar':1.32, 'EuroNZ Dollar':1.87, 'EuroGB Pound':1/1.47, 'EuroYen':156.66,
        'US DollarUS Dollar':1,'US DollarEuro':1/1.32, 'US DollarNZ Dollar': 1.42, 'US DollarGB Pound':1/1.96, 'US DollarYen': 118.98,
        'NZ DollarNZ Dollar':1,'NZ DollarEuro':1/1.87, 'NZ DollarUS Dollar':1/1.42, 'NZ DollarGB Pound':1/2.78, 'NZ DollarYen':83.86,
        'GB PoundGB Pound':1, 'GB PoundEuro':1.47, 'GB PoundUS Dollar':1.96, 'GB PoundNZ Dollar': 2.78, 'GB PoundYen': 233.4,
        'YenYen':1, 'YenEuro':1/156.66, 'YenUS Dollar':1/118.98, 'YenNZ Dollar':1/83.86, 'YenGB Pound':1/233.4}

#Anzeige#

schrift = 'arial 10 bold'
hauptfenster  = Tk ()
hauptfenster.title ("Waehrungsrechner")

fenster1     = Frame (hauptfenster)       # Rahmen fuer graph. Elemente
fenster1.pack ()
fenster2     = Frame (hauptfenster)
fenster2.pack ()
fenster3     = Frame (hauptfenster)
fenster3.pack ()
fenster4     = Frame (hauptfenster)
fenster4.pack ()
fenster5     = Frame (hauptfenster)
fenster5.pack ()

text1 = Label(fenster1, text = 'Geben Sie den Geldbetrag ein, den sie umrechnen moechten:',font= schrift)
geldbetrag = Entry (fenster1)
geldbetrag.insert(0,'0')                         #der Defaultwert beim Programmstart
text1.pack (side="left")
geldbetrag.pack (side="right")

text2 = Label(fenster2, text = 'Waehlen Sie, in welcher Waehrung dieser Betrag ist!',font= schrift)
waehrung1 = ComboBox(fenster2,editable=True)
waehrung1.insert(1, "Euro")
waehrung1.insert(2, "US Dollar")
waehrung1.insert(3, "NZ Dollar")
waehrung1.insert(4, "GB Pound")
waehrung1.insert(5, "Yen")
waehrung1.pack(side="right")
text2.pack (side="left")

text3 = Label(fenster3, text = 'In welche Waehrung wollen Sie den Geldbetrag umrechnen?',font= schrift)
waehrung2 = ComboBox (fenster3, editable=True)
waehrung2.insert(1, "Euro")
waehrung2.insert(2, "US Dollar")
waehrung2.insert(3, "NZ Dollar")
waehrung2.insert(4, "GB Pound")
waehrung2.insert(5, "Yen")
text3.pack (side="left")
waehrung2.pack (side="right")

text4 = Label(fenster4, text = 'Geben Sie den Umrechnungskurs ein! (optional)',font= schrift)
kurs = Entry (fenster4)
kurs.insert(0,'0')
text4.pack (side="left")
kurs.pack (side="right")

text5 = Label(fenster5,font= schrift, text = 'Ergebnis:')
Ergebnis = Label (fenster5, font= schrift,text= '')
text5.pack(side="left")
Ergebnis.pack (side="right")

Endeknopf = Button (hauptfenster, text= "Beenden",font= schrift,width= 12, bg= "pink",
                    command = hauptfenster.destroy)
Endeknopf.pack(side="right")
Rechenknopf = Button (hauptfenster, text="Berechnen!",font= schrift,width= 12, bg="light green",
                      command = rechne)
Rechenknopf.pack(side="left")

hauptfenster.mainloop()
Antworten