我正在嘗試創建一個按鈕來使用tkinter. 我得到了彈出按鈕,并且我創建的功能有效。問題是當函式回傳值時,我得到“.!button”或“.!button1”而不是檔案目錄。
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
gui = Tk()
gui.geometry("100x100")
def getFolderPath():
return filedialog.askdirectory()
btnFind = ttk.Button(gui, text="Open Folder",command=getFolderPath)
btnFind.grid(row=0,column=2)
print(btnFind)
gui.mainloop()
uj5u.com熱心網友回復:
該行print(btnFind)不列印系結到按鈕按下的函式的回傳值,它列印出按鈕本身的名稱。事實上,從函式回傳一些東西是沒有用的,因為你不能訪問回傳值。最好創建一個全域變數來存盤所選檔案夾,或者在這種情況下,直接從函式中列印它:
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
gui = Tk()
gui.geometry("100x100")
def getFolderPath():
print(filedialog.askdirectory())
btnFind = ttk.Button(gui, text="Open Folder",command=getFolderPath)
btnFind.grid(row=0,column=2)
gui.mainloop()
要將值存盤在全域變數中,請使用以下global關鍵字:
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
gui = Tk()
gui.geometry("100x100")
folder = None # Declare global variable first
def getFolderPath():
global folder
folder = filedialog.askdirectory()
btnFind = ttk.Button(gui, text="Open Folder",command=getFolderPath)
btnFind.grid(row=0,column=2)
gui.mainloop()
下面是一個示例,說明如何使用全域變數來存盤檔案夾,然后再使用它:
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
gui = Tk()
gui.geometry("200x100")
folder = None
def getFolderPath():
global folder
folder = filedialog.askdirectory()
def onFolderConfirmed():
global folder
if folder is None:
strvarError.set("Please select a folder first")
else:
doSomethingWithFolder()
def doSomethingWithFolder():
... # Your code here
btnFind = ttk.Button(gui, text="Open Folder", command=getFolderPath)
btnFind.grid()
btnConfirm = ttk.Button(gui, text="Confirm Folder Choice", command=onFolderConfirmed)
btnConfirm.grid(row=1)
strvarError = StringVar()
lblError = Label(gui, textvar=strvarError)
lblError.grid(row=2)
gui.mainloop()
Here I added another button to confirm the choice of folder. If the user presses this without having selected a folder, it prompts them to select one; if not it executes some other code. If you wanted the other code to be run as soon as a folder is selected, just put that code straight in the getFolderPath function.
uj5u.com熱心網友回復:
您正在列印按鈕變數...只需執行以下操作:
from tkinter import *
from tkinter import filedialog, ttk
gui = Tk()
gui.geometry("100x100")
def getFolderPath():
file = filedialog.askdirectory()
#do what you want with file
ttk.Button(gui, text="Open Folder",command=getFolderPath).grid(row=0,column=2)
gui.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421956.html
標籤:
