天天看點

Tkinter 檔案對話框filedialog子產品

在filedialog子產品下提供了各種用于生成檔案對話框的工具函數,如下所示:
    askopenfile():生成打開單個檔案的對話框,傳回所選檔案的檔案流,程式可通過該檔案流讀取檔案内容
    askopenfiles():生成打開多個檔案的對話框,傳回多個所選擇檔案的檔案流組成的清單,程式可通過這些檔案流讀取檔案内容
    askopenfilename():生成打開單個檔案的對話框,傳回所選擇檔案的檔案路徑
    askopenfilenames():生成打開多個檔案的對話框,傳回多個所選擇檔案的檔案路徑組成的元組
    asksaveasfile():生成儲存檔案的對話框,傳回所選檔案的檔案輸出流,程式可通過該檔案輸出流向檔案寫入資料
    asksaveasfilename():生成儲存檔案的對話框,傳回所選擇檔案的檔案路徑
    askdirectory():生成打開目錄的對話框
上面用于生成打開檔案的對話框的工具函數有如下選項
    defaultextension:指定預設拓展名,當使用者沒有輸入拓展名時,系統會預設添加該選項指定的拓展名
    filetypes:指定該檔案對話框中能檢視的檔案類型。該選項是一個序列,可能指定多個檔案類型,可通過“*”隻當浏覽所有檔案
    initialdir:指定初始打開的目錄
    initialfile:指定所選擇的檔案
    parent:指定該對話框的屬主視窗
    title:指定該對話框的标題
    multiple:隻當是否允許多選
           

下面代碼示範了檔案對話框的各個工具函數的用法:

from tkinter import *
# 導入ttk
from tkinter import ttk
# 導入filedialog
from tkinter import filedialog


class App:
    def __init__(self, master):
        self.master = master
        self.initWidgets()

    def initWidgets(self):
        # 建立7個按鈕,并為之綁定事件處理方法
        ttk.Button(self.master, text='打開單個檔案', command=self.open_file).pack(side=LEFT, ipadx=5, ipady=5, padx=10)
        ttk.Button(self.master, text='打開多個檔案', command=self.open_files).pack(side=LEFT, ipadx=5, ipady=5, padx=10)
        ttk.Button(self.master, text='擷取單個打開檔案的檔案名', command=self.open_filename).pack(side=LEFT, ipadx=5, ipady=5,
                                                                                      padx=10)
        ttk.Button(self.master, text='擷取多個打開檔案的檔案名', command=self.open_filenames).pack(side=LEFT, ipadx=5, ipady=5,
                                                                                       padx=10)
        ttk.Button(self.master, text='擷取儲存檔案', command=self.save_file).pack(side=LEFT, ipadx=5, ipady=5, padx=10)
        ttk.Button(self.master, text='擷取儲存檔案的檔案名', command=self.save_filename).pack(side=LEFT, ipadx=5, ipady=5,
                                                                                    padx=10)
        ttk.Button(self.master, text='打開目錄', command=self.open_directory).pack(side=LEFT, ipadx=5, ipady=5, padx=10)

    def open_file(self):
        # 調用askopenfile方法擷取單個打開的檔案
        print(filedialog.askopenfile(title='打開單個檔案', filetypes=[('文本檔案', '*.txt'), ('Python源檔案', '*.py')],  # 隻處理的檔案類型
                                     initialdir='d:/'))  # 初始目錄

    def open_files(self):
        # 調用askopenfiles方法擷取多個打開的檔案
        print(filedialog.askopenfiles(title='打開多個檔案', filetypes=[('文本檔案', '*.txt'), ('Python源檔案', '*.py')],  # 隻處理的檔案類型
                                      initialdir='d:/'))  # 初始目錄

    def open_filename(self):
        # 調用askopenfilename方法擷取單個檔案的檔案名
        print(filedialog.askopenfilename(title='打開單個檔案', filetypes=[('文本檔案', '*.txt'), ('Python源檔案', '*.py')],
                                         # 隻處理的檔案類型
                                         initialdir='d:/'))  # 初始目錄

    def open_filenames(self):
        # 調用askopenfilenames方法擷取多個檔案的檔案名
        print(filedialog.askopenfilenames(title='打開多個檔案', filetypes=[('文本檔案', '*.txt'), ('Python源檔案', '*.py')],
                                          # 隻處理的檔案類型
                                          initialdir='d:/'))  # 初始目錄

    def save_file(self):
        # 調用asksaveasfile方法儲存檔案
        print(filedialog.asksaveasfile(title='儲存檔案', filetypes=[('文本檔案', '*.txt'), ('Python源檔案', '*.py')],  # 隻處理的檔案類型
                                       initialdir='d:/'))  # 初始目錄

    def save_filename(self):
        # 調用asksaveasfilename方法擷取儲存檔案的檔案名
        print(filedialog.asksaveasfilename(title='儲存檔案', filetypes=[('文本檔案', '*.txt'), ('Python源檔案', '*.py')],
                                           # 隻處理的檔案類型
                                           initialdir='d:/'))  # 初始目錄

    def open_directory(self):
        # 調用askdirectory方法打開目錄
        print(filedialog.askdirectory(title='打開目錄',
                                      initialdir='d:/'))  # 初始目錄


root = Tk()
root.title('檔案對話框測試')
App(root)
root.mainloop()
           

效果如圖:

Tkinter 檔案對話框filedialog子產品

點選按鈕:

Tkinter 檔案對話框filedialog子產品

當選擇打開指定檔案後可以在控制台看到被打開檔案的檔案流:

Tkinter 檔案對話框filedialog子產品

可選檔案類型為我們代碼中設定的txt文本檔案和pyPython源檔案

Tkinter 檔案對話框filedialog子產品