ボタンを押したときに変数に値を割り当ててから、使用する値を返すtkinter GUIを作成しようとしていますコードの残りの部分:Python 3.4.2、Tkinterボタンを使用してプログラムで使用する変数を返す
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)
この場合、GUIが表示され、ボタンを押すと終了します。しかし、出力されません(これは、印刷された場合に機能することがわかっている関数の外で呼び出されるためです)。さらに私を混乱させる何
は私がプリント(ANS)でリターン(ANS)を交換した場合、それが印刷されるということです。確かに、これは値が関数から出ることを許さないことを意味するだけですか?その場合、なぜですか?
私は何か助けに感謝しますので、事前に感謝します。
'command = ... 'を使用しても、' ans'は変更されません。変数に 'yes_command(...)'と 'no_command(...)'を格納しておらず、どちらも 'Tkinter.Button'ではありません。それは呼び出されていますが、何も返されません。 – zondo
関数を呼び出すコード( 'mainloop()')はコールバックから返される値を無視するので、コールバックから何かを返すことはできません。 –