打开文件对话框,选择一个文件,返回路径字符串:

示例代码:
from tkinter import filedialog
#文本框用来显示文件路径
strPath = StringVar()
Entry(top,textvariable = strPath)
#响应按钮事件,在文本框显示路径字符串
filePath=filedialog.askopenfilename()
if(filePath != ''):
strPath.set(filePath)
选择文件对话框的格式:
- tkinter.filedialog.asksaveasfilename():选择以什么文件名保存,返回文件名
- tkinter.filedialog.asksaveasfile():选择以什么文件保存,创建文件并返回文件流对象
- tkinter.filedialog.askopenfilename():选择打开什么文件,返回文件名
- tkinter.filedialog.askopenfile():选择打开什么文件,返回IO流对象
- tkinter.filedialog.askdirectory():选择目录,返回目录名
- tkinter.filedialog.askopenfilenames():选择打开多个文件,以元组形式返回多个文件名
- tkinter.filedialog.askopenfiles():选择打开多个文件,以列表形式返回多个IO流对象
import tkinter.filedialog
from tkinter import *
def func1():
a=tkinter.filedialog.asksaveasfilename()#返回文件名
print(a)
a =tkinter.filedialog.asksaveasfile()#会创建文件
print(a)
a =tkinter.filedialog.askopenfilename()#返回文件名
print(a)
a =tkinter.filedialog.askopenfile()#返回文件流对象
print(a)
a =tkinter.filedialog.askdirectory()#返回目录名
print(a)
a =tkinter.filedialog.askopenfilenames()#可以返回多个文件名
print(a)
a =tkinter.filedialog.askopenfiles()#多个文件流对象
print(a)
root=Tk()
btn1=Button(root,text="click",command=func1)
btn1.pack()
root.mainloop()
设置扩展类型:
# _*_ coding:utf-8 _*_
import tkinter
from tkinter import filedialog
def openfiles2():
s2fname = filedialog.askopenfilename(title='打开S2文件', filetypes=[('S2out', '*.out'), ('All Files', '*')])
print(s2fname)
def openfilecgns():
cgnsfname = filedialog.askopenfilename(title='打开CGNS文件',filetypes=[('CGNSdat', '*.dat'), ('All Files', '*')] )
print(cgnsfname)
root = tkinter.Tk()
#root.geometry('500x300+500+200')
btn1 = tkinter.Button(root, text='打开S2文件',font =("宋体",20,'bold'),width=13,height=8, command=openfiles2)
btn2 = tkinter.Button(root, text='打开CGNS文件',font = ('宋体',20,'bold'),width=13,height=8, command=openfilecgns)
btn1.pack(side='left')
btn2.pack(side='left')
root.mainloop()
选择一组文件:
from tkinter import *
import tkinter.filedialog
root = Tk()
def xz():
filenames = tkinter.filedialog.askopenfilenames()
if len(filenames) != 0:
string_filename =""
for i in range(0,len(filenames)):
string_filename += str(filenames[i])+"\n"
lb.config(text = "您选择的文件是:"+string_filename)
else:
lb.config(text = "您没有选择任何文件");
lb = Label(root,text = '')
lb.pack()
btn = Button(root,text="弹出选择文件对话框",command=xz)
btn.pack()
root.mainloop()
示例程序完整代码:
#!/usr/bin/python
#-*-coding:utf-8 -*-
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
import tkinter as tk
from _ast import If
top = tk.Tk()
#这里四个参数分别为:宽、高、左、上
top.geometry("500x300+750+200")
top.title("www.tianqiweiqi.com")
strPath = StringVar()
strResult = StringVar()
def pathCallBack():
filePath=filedialog.askopenfilename();
if(filePath != ''):
strPath.set(filePath);
def okCallBack():
strResult = 'i love you!'
txtResult.delete(0.0, tk.END)
txtResult.insert(tk.INSERT, strResult)
txtResult.update()
btnPath = tk.Button(top,
text='选择',
width=10,
command = pathCallBack)
btnOk = tk.Button(top,
text='转换',
width=10,
command = okCallBack)
Label(top,text="图片路径:").grid(row=0,column=0)
Entry(top,width=45,textvariable = strPath).grid(row=0,column=1)
btnPath.grid(row=0,column=2);
Label(top,text="文本内容:").grid(row=2,column=0)
txtResult = Text(top,width=45,height=15)
txtResult.grid(row=3,column=1)
txtResult.insert(tk.END,'Do you love me?')
btnOk.grid(row=4,column=2);
top.mainloop();
这是个实用的小程序,调用百度AI识别图片中文字:

总结一下filedialog对话框
(1).参数
可用选项及含义
| 选项 | 含义 |
| defaultextension | 指定 文件的后缀,例如: deiautetension=”. ipg”,那么当用户输人一个文件名”FishC”的时候,文件名会 自动添加后缀为”FishC. ipg”。注意:如果用户输人文件名包含后缀,那么该选项不生效 |
| filetypes | 指定筛选文件类型的下拉菜单选项,该选项的值是由2元组构成的列表。每个2元组由(类型名,后缀)构成,例如,filetypes=[(“PNG”, “. png”), (“JPG”,”.jpg”),(“GIF”,”. gif”)] |
| initialdir | 指定打开/保存文件的默认路径。默认路径是当前文件夹 |
| parent | 如果不指定该选项,那么对话框默认显示在根窗口上。如果想要将对话框显示在子窗口w上,那么可以设置parent=w |
| title | 指定文件对话框的标题栏文本 |
(2).返回值
如果用户选择了一个文件,那么返回值是该文件的完整路径
如果用户单机取消按钮,那么返回值是空字符串
