使用 Tkinter 在 Python 中创建文件浏览器

2025年3月17日 | 25 分钟阅读

在下面的教程中,我们将学习如何借助 Python 编程语言的 Tkinter、OS 和 Shutil 模块来构建一个基于 GUI 的文件资源管理器。这个项目适合初学者,我们只需要对所有这些库有一些简要的了解。通过这个项目,我们将把它们应用到实际中。

那么,让我们开始吧。

什么是文件资源管理器?

文件资源管理器或文件管理器是一种允许用户管理设备上文件和文件夹的应用程序。文件管理器应用程序允许用户查看、编辑、复制、删除或移动文件和文件夹。用户还可以管理附加磁盘以及网络存储上的文件和文件夹。

项目先决条件

为了开始在 Python 中构建基于 GUI 的文件资源管理器项目,我们将需要以下库。

  1. Tkinter - 这个库将允许我们创建 GUI 窗口。
  2. OS - 这个库将允许我们对文件及其路径执行不同的操作。
  3. Shutil - 这个库将允许我们复制或移动文件。

由于所有这些库都随 Python 预装,我们无需单独安装它们。

在 Python 中使用 Tkinter 构建文件资源管理器

为了更好地理解,在 Python 中构建文件资源管理器的过程分为几个步骤。我们需要执行的步骤如下:

第一步: 我们将从导入所需的模块开始。

第二步: 然后我们将定义函数以在应用程序中执行不同的操作。

第三步: 接着,我们将为应用程序创建一个主窗口。

第四步: 我们将向窗口添加小部件并设置事件触发器。

现在让我们详细了解这些步骤。

导入必要的模块

首先,我们将为项目导入所有必需的模块。这些模块包括 Tkinter 库中的所有模块和小部件、os 模块和 shutil 模块。

现在让我们考虑下面的代码片段,说明其实现。

文件:fileExplorer.py

说明

在上面的代码片段中,我们从 Tkinter 库导入了所有的模块和小部件。我们还从 Tkinter 库中导入了 messagebox 模块,别名为 mb,以及 filedialog 模块,别名为 fdmessagebox 模块是显示带有不同图标的各种消息的函数集合。filedialog 模块是打开和保存对话框函数的集合。最后,我们导入了 os 模块和 shutil 模块。

定义在应用程序中实现操作所需的函数

一旦所有必需的模块都已导入,我们就可以定义各种函数来实现应用程序中的某些操作。我们将定义打开文件、复制文件、删除文件、重命名文件、打开文件夹、删除文件夹、移动文件夹以及列出文件夹中所有文件的函数。

现在让我们考虑下面的代码片段,并理解所有这些函数的实现。

打开文件

我们定义的第一个函数将允许我们打开任何选定的文件。我们将使用 Tkinter 的 filedialog 模块的 askopenfilename() 方法来选择文件。然后,我们将使用 os 模块的 startfile() 方法来打开选定的文件。

以下是演示相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 openFile() 的函数。在该函数中,我们借助 filedialogaskopenfilename() 方法选择了一个文件。然后,我们使用 os 模块的 startfile() 方法打开了所选文件。我们还在所选文件上使用了 abspath() 方法来规范化文件路径的版本。

复制文件

我们现在将定义另一个函数,用于将文件复制到目录。我们将首先选择要复制的文件和一个要粘贴的目标位置。然后,我们将使用 shutil 模块的 copy() 方法,并返回一个显示成功消息的消息框。

让我们考虑以下演示相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 copyFile() 的函数。在该函数中,我们使用了 filedialog 模块的 askopenfilename() 方法来选择要复制的文件。然后,我们使用了 askdirectory() 方法来选择我们将要粘贴所选文件的目录。接着,我们使用了 try-except 方法和 shutil 模块的 copy() 方法将所选文件粘贴到所需目录。我们还使用 messagebox 模块的 showinfo() 方法显示操作成功的消息,或使用 showerror() 方法显示操作失败的消息。

删除文件

我们现在将定义一个函数来从目录中删除文件。我们将首先从目录中选择文件。然后,我们将使用 os 模块提供的 remove() 方法删除该文件,并显示一个表示成功的消息框。

现在让我们在下面的代码片段中考虑其实现。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 deleteFile() 的函数。在该函数中,我们使用了 filedialogaskopenfilename() 方法从目录中选择文件。然后,我们使用了 os 模块的 remove() 方法来删除所选文件。接着,我们使用了 messagebox 模块的 showinfo() 方法来显示一条成功消息。

重命名文件

我们现在将定义一个函数来重命名文件。我们将首先创建一个弹出窗口,用户将在其中从目录中选择文件并进行重命名。

让我们考虑以下说明相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 renameFile() 的函数。在该函数中,我们使用 Toplevel() 类创建了一个弹出窗口,并将其参数指定为 win_root,即应用程序的主窗口。然后我们设置了窗口的标题、大小和位置。我们还禁用了可调整大小选项以获得更好的用户界面,并将背景颜色设置为 #F6EAD7。接着,我们借助 Tkinter 库的 Label()、Entry()Button() 小部件创建了一个标签、一个输入字段和一个按钮,并将它们的 master 参数设置为 Toplevel() 类的对象,即 rename_window。然后,我们使用 pack() 方法在窗口上设置了这些小部件的位置。我们将 Entry() 小部件的 textvariable 参数设置为 StringVar() 类的对象,即 enteredFileName。我们还将 Button() 小部件的 command 参数设置为 submitName() 函数,从而允许我们重命名文件。

然后我们定义了另一个函数 getFilePath()。在这个函数中,我们使用了 filedialog 模块的 askopenfilename() 方法,并将文件的路径存储在一个名为 the_file 的变量中。然后我们返回了这个变量。

我们定义的最后一个函数是 submitName()。当用户点击我们在 renameFile() 函数中创建的提交按钮时,将调用此函数。在该函数中,我们使用 get() 方法从 enteredFileName 对象中检索值,并使用 set() 方法将值设置为空字符串。然后,我们调用了 getFilePath() 方法,并将返回的路径存储在一个变量中。接着,我们使用 os.path.join() 方法将目录路径与新文件名和扩展名拼接起来。然后我们使用 rename() 方法来重命名文件。最后,我们使用 messageboxshowinfo() 方法向用户显示一条成功消息。

打开文件夹

我们现在将定义一个函数来打开文件夹。这个函数将使用 filedialog 模块的 askdirectory() 方法来选择文件夹,并使用 os 模块的 startfile() 方法打开文件。

让我们考虑以下说明相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 openFolder() 的函数。在该函数中,我们使用了 filedialogaskdirectory() 方法来选择所需的文件夹。然后,我们使用了 os 模块的 startfile() 方法来打开所选的文件夹。

删除文件夹

我们现在将定义一个函数来删除所选的文件夹。此函数将使用 os 模块的 rmdir() 方法从系统中移除目录。

让我们考虑以下说明相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 deleteFolder() 的函数。然后,我们使用 filedialog 模块的 askdirectory() 方法选择所需的文件夹。接着,我们使用 os 模块的 rmdir() 方法从目录中删除所选文件夹。然后,我们使用 messageboxshowinfo() 方法显示一条成功消息。

移动文件夹

我们现在将定义一个函数,将文件夹从其当前位置移动到另一个位置。此函数将使用 shutil 库的 move() 方法将请求的文件夹移动到所需的目的地。

让我们考虑以下说明相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 moveFolder() 的函数。在该函数中,我们两次使用了 filedialogaskdirectory() 方法,以选择所需的文件夹和文件夹将被移动到的目标位置。我们还使用 messagebox 模块的 showinfo() 方法显示了一条消息。然后,我们使用了 try-except 方法,其中我们利用 move() 方法指定了所选文件夹及其重定位的目标。我们还借助 showinfo() 方法显示了成功消息,并使用 messagebox 模块的 showerror() 方法显示了失败消息。

列出文件夹中的文件

我们现在将定义一个函数来列出文件夹中的所有文件。这可以通过使用 os 模块的 listdir() 方法,遍历所有文件并打印它们来完成。我们还可以创建一个弹出窗口来显示所有文件详情。

让我们考虑以下说明相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们定义了一个名为 listFilesInFolder() 的函数。然后我们将变量初始化为 0。接着,我们使用 filedialogaskdirectory() 方法选择所需的文件夹。然后,我们使用 os 模块的 listdir() 方法,并将文件列表存储在一个变量中。接着,我们创建了 Tkinter 库的 Toplevel() 类的一个对象。我们还设置了标题、大小、位置和背景颜色,并禁用了可调整大小的选项。然后,我们使用 Listbox() 小部件创建了一个列表框,并使用 place() 方法将列表框放置在窗口上。接着,我们使用 Scrollbar() 小部件创建了一个滚动条,并使用 pack() 方法将其放置在列表框的右侧。然后,我们使用 Listbox 对象的 config() 方法,并将 yscrollcommand 参数的值设置为 the_scrollbar.set 属性。然后,我们使用 while 循环遍历文件列表,并使用 insert() 方法将文件详情插入到列表框中。

为应用程序创建主窗口

我们现在将为应用程序创建一个主窗口。这个窗口可以使用 Tkinter 库的 Tk() 类来构建。我们还将设置标题、大小、位置和背景颜色。

让我们考虑以下说明相同内容的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们创建了 Tk() 类的一个对象。然后,我们使用 title() 方法设置了应用程序的标题。我们还使用 geometry() 方法设置了应用程序的大小和位置。我们还将 resizable() 方法的参数值设置为零,以禁用可调整大小的选项。最后,我们使用 configure() 方法将背景颜色设置为 #D8E9E6

向主窗口添加小部件并设置事件触发器

一旦应用程序的主窗口创建完成,我们就可以添加一些小部件并设置事件触发器。我们将首先向窗口添加框架,为其他小部件(如标签和按钮)提供结构。然后,我们将添加一个显示标题的标签和不同的按钮,以操作我们之前创建的函数。

创建框架

我们将首先向主窗口添加一些框架。这些框架将为我们稍后定义的小部件提供结构。我们可以借助 Tkinter 库的 Frame() 小部件创建一个框架。

让我们考虑以下代码片段,说明 Frame() 小部件的实现。

文件:fileExplorer.py

说明

在上面的代码片段中,我们使用 Frame() 小部件创建了一些框架。我们还指定了此小部件的 master 参数为 win_root,即 Tk() 类的一个对象,并将背景颜色设置为 #D8E9E6。然后我们使用 pack() 方法将框架放置在窗口中。

创建标签

我们现在将创建一个标签来显示应用程序的标题。可以使用 Label() 小部件创建标签。

让我们考虑以下代码片段,说明 Label() 小部件的实现。

文件:fileExplorer.py

说明

在上面的代码片段中,我们使用 Label() 小部件创建了一个标签。我们将此小部件的 master 参数设置为我们之前定义的 header_frame 框架。我们还设置了文本、字体样式和大小、背景颜色和前景颜色。最后,我们使用 pack() 方法将此标签定位在窗口中。

创建按钮

我们现在将使用 Button() 小部件向应用程序添加一些按钮。这些按钮将允许我们操作我们之前创建的函数。

以下是说明 Button() 小部件实现的代码片段。

文件:fileExplorer.py

说明

在上面的代码片段中,我们使用 Button() 小部件创建了各种按钮,并将其 master 参数设置为 buttons_frame,这是我们之前定义的一个框架。我们还为每个按钮设置了要显示的文本,以及字体样式和大小。我们还设置了按钮小部件、背景颜色、前景颜色、按钮外观以及点击按钮时的背景和前景颜色。我们还将 command 参数的值设置为它们将调用的函数。最后,我们使用 pack() 方法并将 pady 参数的值设置为 8,以在应用程序中定位按钮。

运行应用程序

一旦应用程序的结构准备就绪,我们就可以创建一个 StringVar() 类的对象,它将接受在我们将用于重命名文件的输入字段中输入的字符串。然后,我们将调用 Tk() 类的 mainloop() 方法来运行应用程序。

让我们考虑以下代码片段,演示上述语句的实现。

文件:fileExplorer.py

说明

在上面的代码片段中,我们创建了一个 StringVar() 类的对象,并使用 mainloop() 方法以及 Tk() 类的对象 win_root 来运行应用程序。

因此,我们已经成功地使用 Python 中的 Tkinter 创建了带 GUI 的文件资源管理器。我们现在可以保存 Python 项目文件并执行以下命令来查看结果。

语法

在我们看到输出之前,让我们先看一下 Python 中“使用 Tkinter 的文件资源管理器”项目的完整代码片段。

完整的项目代码

以下是 Python 中“使用 Tkinter 的文件资源管理器”项目的完整代码片段。

文件:fileExplorer.py

输出

图 1: 文件资源管理器应用程序的主窗口

File Explorer using Tkinter in Python

图 2.1: 打开一个文件

File Explorer using Tkinter in Python

图 2.2: 显示所选文件

File Explorer using Tkinter in Python

图 3.1: 复制文件

File Explorer using Tkinter in Python

图 3.2: 选择要粘贴文件的文件夹

File Explorer using Tkinter in Python

图 3.3: 显示消息框,打印文件成功复制到目标位置的成功消息。

File Explorer using Tkinter in Python

图 4.1: 从目录中删除文件

File Explorer using Tkinter in Python

图 4.2: 显示消息框,打印文件删除成功的消息。

File Explorer using Tkinter in Python

图 5.1: 重命名文件

File Explorer using Tkinter in Python

图 5.2: 选择要重命名的文件

File Explorer using Tkinter in Python

图 5.3: 显示消息框,打印文件重命名成功的消息。

File Explorer using Tkinter in Python

图 6.1: 打开文件夹

File Explorer using Tkinter in Python

图 6.2: 显示所选文件夹

File Explorer using Tkinter in Python

图 7.1: 从目录中删除文件夹

File Explorer using Tkinter in Python

图 7.2: 显示消息框,打印文件夹删除成功的消息。

File Explorer using Tkinter in Python

图 8.1: 移动文件夹。

File Explorer using Tkinter in Python

图 8.2: 显示消息框,打印选择所需文件夹的成功消息。

File Explorer using Tkinter in Python

图 8.3: 选择移动文件夹的目标位置。

File Explorer using Tkinter in Python

图 8.4: 显示消息框,打印文件移动成功的消息。

File Explorer using Tkinter in Python

图 9.1: 选择要列出所有文件的文件夹。

File Explorer using Tkinter in Python

图 9.2: 显示列表框窗口,列出所选文件夹中所有可用的文件。

File Explorer using Tkinter in Python
下一个主题Python 自动化交易