我希望將我們獲得的檔案路徑保存filedialog()在定義函式之外的變數中openfile()。
下面是我正在使用的代碼片段:
import tkinter as tk
from tkinter import filedialog, Button
root = tk.Tk()
def openfile():
path = filedialog.askopenfilename()
return path
Button(root, text = "click to open the stock file", command=openfile).pack(pady=20)
file_path = openfile() # this seems to be causing the issue
問題是它filedialog()甚至沒有被點擊就被執行了。
uj5u.com熱心網友回復:
您可以執行以下操作:
def open_file():
global path
path = filedialog.askopenfilename()
然后你可以在程式中的任何地方訪問路徑變數(顯然,在函式運行之后。)
uj5u.com熱心網友回復:
你對filedialog被處決的原因是正確的。回呼函式openfile()不能回傳值,因為它tkinter呼叫它們。GUI 程式需要一種不同于您可能曾經使用過的編程范式——它們是事件驅動的。這意味著他們只能根據處理用戶輸入來執行操作。因此,您需要將呼叫askopenfilename()函式的結果保存為全域變數。
tkinter提供了幾種不同型別的變數類- ,,和-這是這樣的事情好。在下面的代碼中,我展示了如何使用 a來存盤路徑。BooleanVarDoubleVarIntVarStringVarStringVar
下一步將添加代碼以對存盤在file_path. 一種可能性是添加另一個 GUI 元素,如 a Button,它呼叫另一個對值執行某些操作的函式。
import tkinter as tk
from tkinter import filedialog, Button
root = tk.Tk()
file_path = tk.StringVar()
def openfile():
path = filedialog.askopenfilename()
file_path.set(path) # Save value returned.
Button(root, text = "click to open the stock file", command=openfile).pack(pady=20)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358523.html
