Tkinter 檔案對話方塊

Salman Mehmood 2023年1月30日
  1. Python 的 Tkinter 庫中的檔案對話方塊
  2. 在 Python 中使用 askopenfilename() 方法通過 Tkinter 對話方塊瀏覽檔案
  3. 在 Python 中使用 asksaveasfile() 方法通過 Tkinter 對話方塊儲存檔案
  4. 在 Python 中使用 Tkinter 的 askdirectory() 方法選擇目錄
Tkinter 檔案對話方塊

本教程將演示如何使用 filedialog Tkinter 類建立檔案對話方塊並探索幾種方法。

Python 的 Tkinter 庫中的檔案對話方塊

Python Tkinter 庫提供了許多可用於處理檔案的對話方塊。通過在 Tkinter 中開發,你不需要自己建立標準對話方塊。

檔案對話方塊包括開啟檔案對話方塊、儲存檔案框等。

檔案對話方塊可幫助你開啟儲存檔案或目錄。當你單擊檔案開啟它時,你會看到這種對話方塊。

filedialog 類有助於建立對話方塊;無需從頭開始編寫程式碼。

在 Python 中使用 askopenfilename() 方法通過 Tkinter 對話方塊瀏覽檔案

選項 解釋
title 可以使用此選項在對話方塊中設定名稱。
initialdir 採用路徑以在特定目錄中開啟對話方塊。
filetypes 這個選項需要一個元組。你可以傳遞特定的檔名和副檔名。
defaultextension 我們不指定副檔名。如果我們在方法中傳遞這個選項,對話方塊會自動選擇傳遞給值的副檔名。此選項僅適用於儲存對話方塊。

我們可以使用 askopenfilename() 方法來上傳檔案。此方法返回檔案位置。

在這個例子中,我們建立了一個 open() 函式。open() 函式使用 askopenfilename 方法幫助對話方塊出現。

from tkinter import Tk, filedialog, Button, Label
from PIL import ImageTk, Image

root = Tk()
root.geometry("400x400")


def open():
    # Create a dialog box
    root.file_name = filedialog.askopenfilename(
        initialdir="your directory path",
        title="file uploader",
        filetypes=(("jpg files", "*.jpg"), ("all files", "*.*")),
    )
    # takes path that is selected by dialog box
    selected_image = Image.open(root.file_name)
    # resize image
    selected_image = selected_image.resize((300, 205), Image.ANTIALIAS)
    # displays an image
    root.image = ImageTk.PhotoImage(selected_image)
    selected_image_label = Label(root, image=root.image).pack()


btn = Button(root, text="upload image", command=open).pack()
root.mainloop()

askopenfilename 方法

在 Python 中使用 asksaveasfile() 方法通過 Tkinter 對話方塊儲存檔案

如果你閱讀本文,你已經熟悉另存為對話方塊。在這種情況下,我們使用 asksaveasfile() 方法。

此方法可讓你將檔案儲存在所需位置。

from tkinter import *
from tkinter import filedialog


def saveFile():
    file = filedialog.asksaveasfile(
        initialdir="your directory path",
        defaultextension=".txt",
        filetypes=[
            ("Text file", ".txt"),
            ("HTML file", ".html"),
            ("All files", ".*"),
        ],
    )
    if file is None:
        return
    # get the text
    filetext = str(text.get(1.0, END))
    file.write(filetext)
    file.close()


win = Tk()
button = Button(text="save", command=saveFile)
button.pack()
# create text box
text = Text(win)
text.pack()
win.mainloop()

saveFile() 方法有助於從 Text 元件中獲取文字,並允許你選擇要儲存此檔案的位置。

asksaveasfile 方法

We can see the file is saved in the given location.

輸出文字檔案

在 Python 中使用 Tkinter 的 askdirectory() 方法選擇目錄

此方法僅選擇一個目錄。此方法不允許選擇任何檔案。

from tkinter import Tk, filedialog, Button

win = Tk()


def openDirectory():
    dir_path = filedialog.askdirectory(
        initialdir="your directory path", title="Select directory"
    )


btn = Button(win, text="upload image", command=openDirectory).pack()

win.mainloop()

如果遇到 Unicode 錯誤,你可以將 r 放在路徑前。例如,r"your directory path"

askdirectory 方法

我們已經討論了主要可用的方法,但在 filedialog 類中仍然存在更多方法。點選這裡瞭解更多方法

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn