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()
在这里我添加了另一个按钮来确认文件夹的选择。如果用户在没有选择文件夹的情况下按下它,它会提示他们选择一个;如果不是,它会执行一些其他代码。如果您希望在选择文件夹后立即运行其他代码,只需将该代码直接放入 getFolderPath 函数中即可。