如何使用按钮获取文件路径?
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
函数即可。
我正在尝试使用 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
函数即可。