打开文件对话框,选择一个文件,返回路径字符串:
示例代码:
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).返回值
如果用户选择了一个文件,那么返回值是该文件的完整路径
如果用户单机取消按钮,那么返回值是空字符串