【tkinter标准对话框】filedialog:打开保存,文件对话框!

【tkinter标准对话框】filedialog:打开保存,文件对话框!_第1张图片

文章目录

  • 一、filedialog简介
  • 二、运用实例
  • 三、参数&返回值
    • 1. 参数
    • 2. 返回值


一、filedialog简介

在tkinter中有三种标准对话框:

  • messagebox
  • filedialog
  • colorchooser

之前我们说了 messagebox 消息对话框,再来认识认识 filedialog 对话框

如果你的应用程序会需要到打开文件、保存文件、选择目录等关于文件的操作,那么就必须要用到 filedialog 。
【tkinter标准对话框】filedialog:打开保存,文件对话框!_第2张图片
下面是所有的 filedialog 的函数。

函数 用法
asksaveasfilename() 选择以什么文件名保存,返回文件名
asksaveasfile() 选择以什么文件保存,创建文件并返回文件流对象
askopenfilename() 选择打开什么文件,返回文件名
askopenfile() 选择打开什么文件,返回IO流对象
askopenfiles() 选择打开多个文件,以列表形式返回多个IO流对象
askdirectory() 选择目录,返回目录名

看上去 filedialog 中的函数挺多的,但是我们常用的也就不外乎 askopenfilename 打开文件、asksaveasfilename 保存文件,顶多加上个askdirectory 选择目录。
在这里插入图片描述

二、运用实例

我们通过一个实际案例,来看看我们常用的 filedialog 函数是怎么使用的。

import tkinter as tk 
from tkinter.filedialog import *
from PIL import Image
  
def selectFile():
	global img
	filepath = askopenfilename()  # 选择打开什么文件,返回文件名
	filename.set(filepath)             # 设置变量filename的值
	img = Image.open(filename.get())    # 打开图片

def outputFile():
	outputFilePath = askdirectory()   # 选择目录,返回目录名
	outputpath.set(outputFilePath)   # 设置变量outputpath的值

def fileSave():
	filenewpath = asksaveasfilename(defaultextension='.png')   # 设置保存文件,并返回文件名,指定文件名后缀为.png
	filenewname.set(filenewpath)                                                 # 设置变量filenewname的值
	img.save(str(filenewname.get()))                                            # 设置保存图片

root = tk.Tk()
filename = tk.StringVar()
outputpath = 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=selectFile).grid(row=1, column=2, padx=5, pady=5)

# 构建“选择目录”这一行的标签、输入框以及启动按钮
tk.Label(root, text='选择目录').grid(row=2, column=0, padx=5, pady=5)
tk.Entry(root, textvariable=outputpath).grid(row=2, column=1, padx=5, pady=5)
tk.Button(root, text='点击选择', command=outputFile).grid(row=2, column=2, padx=5, pady=5)

# 构建“保存文件”这一行的标签、输入框以及启动按钮
tk.Label(root, text='保存文件').grid(row=3, column=0, padx=5, pady=5)
tk.Entry(root, textvariable=filenewname).grid(row=3, column=1, padx=5, pady=5)
tk.Button(root, text='点击保存', command=fileSave).grid(row=3, column=2, padx=5, pady=5)


root.mainloop()

运行程序来看一下。

  • 第一个按钮是选择文件,我们选择了一张图片,Entry 组件中值为返回的完整文件名
  • 第二个按钮是选择目录,Entry 组件中值为返回的目录
  • 第三个按钮是保存文件,我们点开自定义输入"111",然后我们返回到文件夹就看到我们的原图就另存为了一张名为"111.png"的图片

在这里插入图片描述

三、参数&返回值

——

1. 参数

下面列出 filedialog 的各个函数可设置的参数以及用法。

参数 用法
defaultextension 1. 指定文件的后缀;2. 例如:defaultextension=".jpg",那么当用户输入一个文件名 “逆旅鸭” 的时候,文件名会自动添加后缀为 “逆旅鸭.jpg”;3. 注意:如果用户输入文件名包含后缀,那么该选项不生效
filetypes 1. 指定筛选文件类型的下拉菜单选项;2. 该选项的值是由 2 元祖构成的列表;3. 每个 2 元祖由(类型名,后缀)构成,例如:filetypes=[(“PNG”, “.png”), (“JPG”, “.jpg”), (“GIF”, “.gif”)]
initialdir 1. 指定打开/保存文件的默认路径;2. 默认路径是当前文件夹
parent 1. 如果不指定该选项,那么对话框默认显示在根窗口上;2. 如果想要将对话框显示在子窗口 w 上,那么可以设置 parent=w
title 指定文件对话框的标题栏文本

——

2. 返回值

  • asksaveasfilename() 选择以什么文件名保存,返回文件名

  • asksaveasfile() 选择以什么文件保存,创建文件并返回文件流对象

  • askopenfilename() 选择打开什么文件,返回文件名

  • askopenfilenames() 选择打开多个文件,以元组形式返回多个文件名

  • askopenfile() 选择打开什么文件,返回IO流对象

  • askopenfiles() 选择打开多个文件,以列表形式返回多个IO流对象

  • askdirectory() 选择目录,返回目录名

  • 如果用户点击了取消按钮,那么返回值是空字符串

在这里插入图片描述在这里插入图片描述

你可能感兴趣的:(tkinter探索之旅,python,tkinter,filedialog)