如何使用按钮获取文件路径?

How do I get a file path using a button?

我正在尝试使用 tkinter 创建一个按钮来获取文件目录。我得到弹出按钮,我创建的功能起作用了。问题是当函数 returns 的值时,我得到“.!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()

您正在打印按钮变量... 简单地做:

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()

print(btnFind) 不打印绑定到按钮按下的函数的 return 值,它打印出按钮本身的名称。事实上,从函数中 returning 一些东西是没有用的,因为你不能访问 return 值。最好创建一个全局变量来存储 selected 文件夹,或者,在这种情况下,直接从函数打印它:

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()

这里我添加了另一个按钮来确认文件夹的选择。如果用户在没有 select 文件夹的情况下按下此键,它会提示他们 select 一个;如果不是,它会执行一些其他代码。如果您希望其他代码在文件夹 selected 后立即成为 运行,只需将该代码直接放入 getFolderPath 函数即可。