【tkinter標準對話框】filedialog:打開保存,文件對話框!

在這裏插入圖片描述


一、filedialog簡介

在tkinter中有三種標準對話框:

  • messagebox
  • filedialog
  • colorchooser

之前我們說了 messagebox 消息對話框,再來認識認識 filedialog 對話框

如果你的應用程序會需要到打開文件、保存文件、選擇目錄等關於文件的操作,那麼就必須要用到 filedialog 。
在這裏插入圖片描述
下面是所有的 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() 選擇目錄,返回目錄名

  • 如果用戶點擊了取消按鈕,那麼返回值是空字符串

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章