Python GUI tkinter 学习(三)—— tkinter.filedialog
tkinter.filedialog
--- 文件选择对话框
tkinter.filedialog
模块提供了用于创建文件/目录选择窗口的类和函数
一、 Static factory functions
调用以下函数时,会创建一个模态的、原生外观的对话框,等待用户选取,然后将选中值或
None
返回给调用者
tkinter.filedialog.askopenfile
(
mode='r'
,
**options
)
tkinter.filedialog.askopenfiles
(
mode='r'
,
**options
)
上述两个函数是选择打开的文件,第一个是打开一个文件,返回一个只读模式打开的文件对象;第二个函数是选择打开多个文件,返回一个只读模式打开的文件对象的列表
tkinter.filedialog.asksaveasfile
(
mode='w'
,
**options
)
选择以什么文件保存,创建文件并返回文件流对象,返回一个写入模式打开的文件对象
tkinter.filedialog.askopenfilename
(
**options
)
tkinter.filedialog.askopenfilenames
(
**options
)
上述两个函数是打开文件,并返回选中的文件名,对应着已存在的文件
tkinter.filedialog.asksaveasfilename
(
**options
)
以什么文件名保存文件,并返回文件名
tkinter.filedialog.askdirectory
(
**options
)
提示用户选择一个目录,返回目录名;这里有一个关键字参数, mustexist —— 确定是否必须为已存在的目录
class
tkinter.filedialog.Open
(
master=None
,
**options
)
class
tkinter.filedialog.SaveAs
(
master=None
,
**options
)
上述两个类提供了用于保存和加载文件的原生对话窗口
二、 参数和返回值
上述函数,提供了文件对话窗口,这些窗口带有原生外观,具备可定制行为的配置项。以下关键字参数适用于上述类和函数:
参数 : parent
对话框窗口显示,1. 如果不指定该选项,那么对话框默认显示在根窗口上;2. 如果想要将对话框显示在子窗口 win 上,那么可以设置 parent=win
参数 : title
窗口的标题
参数 : initialdir
对话框的启动目录 : 1. 指定打开/保存文件的默认路径;2. 默认路径是当前文件夹
参数 : initialfile
打开对话框时选中的文件
参数 : filetypes
标签,匹配模式)元组构成的列表,允许使用 “*” 通配符 ; 指定筛选文件类型的下拉菜单选项; 该选项的值是由 2 元祖构成的列表; 每个 2 元祖由(类型名,后缀)构成,例如:filetypes=[(“TXT”, “.txt”), (“JPG”, “.jpg”), (“GIF”, “.gif”)]
参数名 : defaultextension
默认的扩展名,用于加到文件名后面(保存对话框)。例如:defaultextension=".txt",那么当用户输入一个文件名 “哈啊” 的时候,文件名会自动添加后缀为 “哈啊.txt”;如果用户输入文件名包含后缀,那么该选项不生效
参数名 : multiple
控制是否可以多选,为True则表示可以多选
返回值 : 上面有提到返回值,这里再补充一个,就是如果用户点击取消的话,返回值是空字符串
三、 demo 实例
import tkinter as tk
from tkinter.filedialog import *
def openFile():
filepath = askopenfilename() # 选择打开什么文件,返回文件名
if filepath.strip() != '':
filename.set(filepath) # 设置变量filename的值
else:
print("do not choose file")
def openDir():
fileDir = askdirectory() # 选择目录,返回目录名
if fileDir.strip() != '':
dirpath.set(fileDir) # 设置变量outputpath的值
else:
print("do not choose Dir")
def fileSave():
filenewpath = asksaveasfilename(defaultextension='.txt') # 设置保存文件,并返回文件名,指定文件名后缀为.txt
if filenewpath.strip() != '':
filenewname.set(filenewpath) # 设置变量filenewname的值
else:
print("do not save file")
root = tk.Tk()
root.title("fileDialog test")
filename = tk.StringVar()
dirpath = tk.StringVar()
filenewname = tk.StringVar()
# 打开文件
tk.Label(root, text='选择文件').grid(row=1, column=0, padx=5, pady=5)
tk.Entry(root, textvariable=filename).grid(row=1, column=1, padx=5, pady=5)
tk.Button(root, text='打开文件', command=openFile).grid(row=1, column=2, padx=5, pady=5)
# 选择目录
tk.Label(root, text='选择目录').grid(row=2, column=0, padx=5, pady=5) # 创建label 提示这是选择目录
tk.Entry(root, textvariable=dirpath).grid(row=2, column=1, padx=5, pady=5) # 创建Entry,显示选择的目录
tk.Button(root, text='打开目录', command=openDir).grid(row=2, column=2, padx=5, pady=5) # 创建一个Button,点击弹出打开目录窗口
# 保存文件