我想出了這個代碼時:執行函數,而不是腳本運行
import tkinter
from tkinter.filedialog import askopenfilename
def browse():
inputfilename=askopenfilename()
return inputfilename
def fileManipulator(infile=browse(),outfile="C:\\out\\File.kml"):
#code that manipulates the file here
file.save(outfile)
root=tkinter.Tk()
browseButton=tkinter.Button(root,text="Browse",command=browse)
browseButton.pack()
fileButton=tkinter.Button(root,text="Manipulate file",command=fileManipulator)
fileButton.pack()
root.mainloop()
的代碼給了我兩個按鈕的GUI。 瀏覽按鈕應該讓用戶瀏覽輸入文件。 操縱文件按鈕應該處理該文件並將文件輸出保存在某處。
我面臨的問題是,只要我運行腳本,瀏覽askopenfilename
函數就會執行。發生這種情況是因爲我正在調用fileManipulator函數定義內的函數。我在調用fileManipulator函數的原因顯然是因爲我想使用askopenfilename返回的路徑作爲輸入文件。
是否有解決方法立即不執行askopenfilename
,但是當按下按鈕時?
EDITS:我也不想瀏覽()函數,當我按下文件機械臂按鈕被再次執行。
對不起,我應該補充一些更多的細節。您的解決方案很好,因爲browse()函數現在不會立即執行。但是,除此之外,我還希望GUI在「瀏覽」對話框中僅提示用戶一次。在您的解決方案中,當用戶按下瀏覽按鈕時會提示用戶,而另一次按下文件控制器時會提示用戶。我還編輯了我的問題,以反映我正在尋找的內容。 – multigoodverse
好吧,讓我直接得到它,你想瀏覽()按鈕顯示當你第一次點擊文件操作,但如果它第二次點擊,你不想再次瀏覽瀏覽? –
我想要三件事情: 1.執行腳本時,會顯示一個帶有兩個按鈕的GUI,但不會發生任何其他事情 2.當按下瀏覽按鈕時,系統會提示用戶瀏覽對話框,然後選擇文件中的文件系統。 3.當按下文件操縱器按鈕時,腳本將處理用戶在步驟2中選擇的文件,並且不會再次使用瀏覽對話框詢問提示。 目前,瀏覽對話框仍然出現時,文件Manipuator是prssed。 – multigoodverse