Tkinter 文件对话框

Salman Mehmood 2024年2月15日
  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