Eingabe als Formel

Fragen zu Tkinter.
Antworten
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Hallo Allerseits,
Falls es dieses Thema irgendwo schon gibt tut mir das leid! Gerne verlinken, ich habe nichts gefunden...

Meine Frage ist glaube ich eigentlich ziemlich trivial, ich komme aber einfach nicht weiter:

Ich habe in Python ein Programm geschrieben, in dem ich über eval(input()) [ja ich weiß, eval benutzt man möglichst nicht] eine Formel mit variablen, die ich davor definiert habe eingeben kann, so dass mir über print() dann das Ergebnis ausgegeben wird, und nicht die eingegebene Formel.
Nun bin ich gerade dabei das Programm über tkinter mit einer Benutzeroberfläche zu versehen, und scheitere genau daran, dass mir ein Ergebnis geliefert wird...
------------------------------------------------
def button_action2():
> a = eingabefeld_a.get()
> if a == "" or "0":
>> weiter_label1 = Label(window2, text="Bitte Gleichung eingeben: ")
>> eingabefeld_f = Entry(window2, bd=5, width=20)
>> b = str(eingabefeld_f)
>> if (b == ""):
>>> ergebnis_label1 = Label(window2, text="Ergebnis: ")
>> else:
>>> ergebnis_label1 = Label(window2, text="Ergebnis: " + b)

>> weiter_label1.grid(row = 1, column = 2)
>> eingabefeld_f.grid(row = 1, column = 3)
>> ergebnis_label1.grid(row = 2, column = 3)


window2 = Tk()
window2.title("Rechner für gauß´sche fehlerfortpflanzung")
info_label10 = Label(window2, text="Bitte eintragen:")
a = Label(window2, text="Wie viele fehlerbehaftete Werte werden verrechnet?")

eingabefeld_a = Entry(window2, bd=5, width=1)

weiter_button = Button(window2, text="weiter", command=button_action2)
exit_button = Button(window2, text="Beenden", command=window2.quit)

info_label10.grid(row = 0, column = 0)
a.grid(row = 1, column = 0)
eingabefeld_a.grid(row = 1, column = 1)
weiter_button.grid(row = 2, column = 0)
exit_button.grid(row = 2, column = 1)
-----------------------------------------------

Und zwar ist der rot-markierte Bereich das Problem... Es wird beim Ausführen noch die Formel abgefragt, allerdings als Ergebnis kein Wert, sondern "entry3" o.ä.

Hoffe mir kann jmd helfen und ihr versteht, was mein Problem ist,

Vielen Dank schon einmal,

Grüße
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@frcom: so funktionieren GUI-Programme nicht. Bei GUIs gibt es keinen serielle Ablauf. Man muß auf Ereignisse reagieren. Bei `b = ...` fehlt ein `.get()`, aber auch wenn das da stehen würde, gäbe es für den Nutzer gar keine Möglichkeit, zwischen erstellen des Entry-Feldes und dem Abfragen des Wertes einen Wert anzugeben.
Antworten