Ich versuche eine Tkinter GUI zu erstellen, die einer Variablen einen Wert zuweist, wenn eine Taste gedrückt wird, und dann den Wert zurückgibt der Rest des Codes:Python 3.4.2, die Tkinter-Tasten verwenden, um eine Variable zurückzugeben, die von dem Programm verwendet werden soll
from tkinter import *
def yes_command(ans):
ans = 'yes'
window.destroy()
return (ans)
def no_command(ans):
ans = 'no'
window.destroy()
return (ans)
window = Tk()
yes_no_label = Label(window, text="Yes or no?")
yes_no_label.grid(row=0, column=1)
YESbutton = Button(window, text="Yes", fg='green', command = lambda :yes_command(ans))
YESbutton.grid(row=1, column=0)
NObutton = Button(window, text = 'No', fg = 'red', command= lambda :no_command(ans))
NObutton.grid(row=1, column=2)
window.mainloop()
print(ans)
Dabei wird der GUI kommt und sobald eine Taste gedrückt wird, tut es zu schließen. Es wird jedoch nicht ausgegeben (wie dies außerhalb der Funktion, ich weiß, es würde funktionieren, wenn es gedruckt wird).
Was mich weiter verwirrt, ist, dass, wenn ich Rückkehr (am) mit Druck ersetzen (am) es gedruckt wird. Sicherlich bedeutet dies nur, dass der Wert die Funktion nicht verlassen kann. In welchem Fall, warum?
Ich wäre dankbar für jede Hilfe, also danke im Voraus.
Mit 'command = ...' ändert sich 'ans' nicht. Sie speichern 'yes_command (...)' und 'no_command (...)' nicht in einer Variablen und keines ist 'Tkinter.Button'. Es wird * genannt, aber nichts speichert, was es zurückgibt. – zondo
Sie können nicht etwas von einem Callback zurückgeben, da der Code, der die Funktion aufruft ('mainloop()'), zurückgegebene Werte von Callbacks ignoriert. –