您好,我是 python 新手,我被困住了,我需要幫助。
我的問題是:我有一個回傳字串的函式我在按鈕中呼叫此函式如何獲取此值?
我的代碼:
from tkinter import*
from tkinter import filedialog
file_path = ''
def window():
fen=Tk() fen.geometry('{0}x{1} {2} {3}'.format(600, 400, 300, 200))
fen.config(bg = "#87CEEB")
return fen
def select_file():
file_path = filedialog.askopenfilename()
return file_path
def main():
fen = window()
bouton1 = Button(fen, text = "Select a file", command= select_file())
print(file_path)
fen.mainloop()
main()
如果我在我的函式中列印 file_path 我可以做到,那就完美了,
但我無法將其從功能中取出
uj5u.com熱心網友回復:
當函式作為事件的結果(按下按鈕等)被呼叫時,您無法獲得回傳值。呼叫函式的代碼(內部mainloop)忽略回傳值。
如果代碼的其他部分需要該值,則需要將其存盤為物件的屬性或全域變數。
修改后的代碼中的另一個問題是您print在用戶有機會單擊按鈕之前呼叫了該陳述句,因此即使您使用全域變數,該值也會為空。您必須等到單擊按鈕并選擇檔案后才能使用該值。
例如,創建一個列印值的函式,然后將該函式附加到按鈕上。單擊按鈕選擇檔案,然后單擊按鈕顯示資料。只要將第一個函式中的值保存到全域變數中,它就可以在第二個函式中使用。
uj5u.com熱心網友回復:
理論上,您將無法按原樣執行此操作,將檔案路徑回傳到 button。
使用該函式在物件中設定變數,或設定全域變數。
此外,您在函式呼叫之前不需要 lambda,只需呼叫不帶大括號的函式(即 command = select_file)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/468257.html
