添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Python GUI tkinter 学习(三)—— tkinter.filedialog

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,点击弹出打开目录窗口
# 保存文件