我想創建一個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()')忽略回調函數的返回值,所以不能從回調函數中返回某些東西。 –