Tkinter Askopenfilename

Salman Mehmood 2022年5月17日
Tkinter Askopenfilename

本文将演示如何使用文件对话框使用 filedialog 类中的 askopenfilename() 方法打开文件。无论文件在你的计算机上的什么位置。

当我们处理现实世界的 GUI 应用程序并希望添加一个文件对话框功能来打开文件(图像、PDF 文件或任何东西)时,你如何使用 Tkinter 做到这一点?使用称为 filedialog 类的东西真的很容易。

在 Tkinter 中使用 askopenfilename() 方法打开文件对话框

askopenfilename() 负责在 Tkinter GUI 应用程序中打开和读取文件;此方法存在于 filedialog 类中。

所以首先,我们需要导入这个类,如下所示。

from tkinter import filedialog

创建 Tk() 类的实例后,我们需要在我们的 GUI 中添加一个按钮,因此当我们单击此按钮时,它将启动一个文件对话框,我们可以选择我们的文件。

open_btn = Button(text="Open",command=openFile)
open_btn.pack()

我们创建了一个帮助打开文件对话框的 openFile() 函数。我们正在使用 filedialog 类中的方法。

def openFile():
    # takes file location and its type
    file_location = filedialog.askopenfilename(initialdir=r"F:\python\pythonProject\files",
                                          title="Dialog box",
                                          filetypes= (("text files","*.txt"),
                                          ("all files","*.*")))
    # read selected file by dialog box
    file = open(file_location,'r')
    print(file.read())
    file.close()

在这个方法中,我们必须传递一堆不同的选项。

  1. initialdir:此选项告诉对话框要从哪个目录开始,因此该框会弹出你要显示的目录,因此你应该使用此选项。
  2. title:这只是弹出框的标题。它的顶部会有一个小标题,你可以放任何你想要的东西。
  3. filetypes:此选项有助于选择要显示的文件类型。你可以只放置所有文件,特别是 .txt 文件或其他文件扩展名。

askopenfilename() 方法返回一个字符串,该字符串是你的文件所在的文件路径,因此我们将文件路径存储在一个名为 file_location 的变量中。

现在我们将打开并读取该文件的内容以创建一个文件变量,并且我们使用了接受文件路径和模式的 open 函数。

我们使用 "r" 模式以阅读模式打开文件。read() 方法有助于读取整个内容并将其显示在控制台中。

完整的源代码在这里。

from tkinter import *
from tkinter import filedialog

def openFile():
    # takes file location and its type
    file_location = filedialog.askopenfilename(initialdir=r"F:\python\pythonProject\files",
                                          title="Dialog box",
                                          filetypes= (("text files","*.txt"),
                                          ("all files","*.*")))
    # read selected file by dialog box
    file = open(file_location,'r')
    print(file.read())
    file.close()

gui_win = Tk()
gui_win.geometry('200x200')
gui_win.title('Delftstack')
open_btn = Button(text="Open",command=openFile)
open_btn.pack()
gui_win.mainloop()

输出:

tkinter askopenfilename

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