使用 Python和PyQt5 打造 你的专属文件查询工具! 附源码

本文将介绍如何使用Python和PyQt5创建一个简单的文件查询工具。该工具允许用户选择一个目录,并在该目录中搜索特定的文件。

依赖库

首先,确保你已经安装了PyQt5库:

pip install PyQt5

步骤

第一步:导入库

我们需要导入必要的库,包括sysosPyQt5

import sys
import os
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel, QPushButton, QFileDialog, QLineEdit, QListWidget

解析

  • sys 和 os:用于系统操作和文件操作。
  • PyQt5.QtWidgets:用于创建图形用户界面(GUI)。
第二步:创建主窗口

我们定义一个FileSearchApp类,继承自QMainWindow,并在其构造函数中设置窗口标题和大小。

class FileSearchApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("文件查询工具")
        self.setGeometry(100, 100, 600, 400)

解析

  • QMainWindow:PyQt5中的主窗口类。
  • setWindowTitle:设置窗口标题。
  • setGeometry:设置窗口大小和位置。
第三步:创建布局和部件

我们创建一个主窗口部件central_widget,并设置一个垂直布局QVBoxLayout。在布局中添加标签、按钮、输入框和列表框。

        # 创建主窗口部件
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        # 创建布局
        self.layout = QVBoxLayout()
        self.central_widget.setLayout(self.layout)

        # 创建标签和按钮
        self.dir_label = QLabel("选择目录:")
        self.layout.addWidget(self.dir_label)

        self.dir_button = QPushButton("选择目录")
        self.dir_button.clicked.connect(self.select_directory)
        self.layout.addWidget(self.dir_button)

        self.search_label = QLabel("输入文件名:")
        self.layout.addWidget(self.search_label)

        self.search_input = QLineEdit()
        self.layout.addWidget(self.search_input)

        self.search_button = QPushButton("搜索")
        self.search_button.clicked.connect(self.search_files)
        self.layout.addWidget(self.search_button)

        self.result_list = QListWidget()
        self.layout.addWidget(self.result_list)

解析

  • QWidget:PyQt5中的基本窗口部件。
  • QVBoxLayout:垂直布局类。
  • QLabel:标签类。
  • QPushButton:按钮类。
  • QLineEdit:单行文本输入框类。
  • QListWidget:列表框类。
第四步:选择目录

select_directory方法使用QFileDialog让用户选择一个目录,并显示在标签上。

    def select_directory(self):
        directory = QFileDialog.getExistingDirectory(self, "选择目录")
        if directory:
            self.dir_label.setText(f"选择目录: {directory}")
            self.directory = directory

解析

  • QFileDialog.getExistingDirectory:打开目录选择对话框。
  • setText:设置标签文本。
第五步:搜索文件

search_files方法遍历选定目录中的所有文件,如果文件名包含搜索关键词,则将其路径添加到结果列表中。

    def search_files(self):
        self.result_list.clear()
        search_term = self.search_input.text()
        if hasattr(self, 'directory') and search_term:
            for root, dirs, files in os.walk(self.directory):
                for file in files:
                    if search_term in file:
                        self.result_list.addItem(os.path.join(root, file))

解析

  • os.walk:遍历目录树。
  • hasattr:检查对象是否具有某个属性。
  • addItem:向列表框添加项目。

运行程序

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = FileSearchApp()
    main_window.show()
    sys.exit(app.exec_())

解析

  • QApplication:PyQt5应用程序类。
  • sys.argv:命令行参数列表。
  • show:显示窗口。
  • exec_:进入应用程序的主循环。

运行结果

运行上述代码后,你将看到一个窗口,可以选择目录并输入文件名进行搜索,结果将显示在列表中。

完整代码

import sys
import os
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel, QPushButton, QFileDialog, QLineEdit, QListWidget

class FileSearchApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("文件查询工具")
        self.setGeometry(100, 100, 600, 400)

        # 创建主窗口部件
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        # 创建布局
        self.layout = QVBoxLayout()
        self.central_widget.setLayout(self.layout)

        # 创建标签和按钮
        self.dir_label = QLabel("选择目录:")
        self.layout.addWidget(self.dir_label)

        self.dir_button = QPushButton("选择目录")
        self.dir_button.clicked.connect(self.select_directory)
        self.layout.addWidget(self.dir_button)

        self.search_label = QLabel("输入文件名:")
        self.layout.addWidget(self.search_label)

        self.search_input = QLineEdit()
        self.layout.addWidget(self.search_input)

        self.search_button = QPushButton("搜索")
        self.search_button.clicked.connect(self.search_files)
        self.layout.addWidget(self.search_button)

        self.result_list = QListWidget()
        self.layout.addWidget(self.result_list)

    def select_directory(self):
        directory = QFileDialog.getExistingDirectory(self, "选择目录")
        if directory:
            self.dir_label.setText(f"选择目录: {directory}")
            self.directory = directory

    def search_files(self):
        self.result_list.clear()
        search_term = self.search_input.text()
        if hasattr(self, 'directory') and search_term:
            for root, dirs, files in os.walk(self.directory):
                for file in files:
                    if search_term in file:
                        self.result_list.addItem(os.path.join(root, file))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = FileSearchApp()
    main_window.show()
    sys.exit(app.exec_())

代码解析

  1. 导入库:我们导入了 sysos 和 PyQt5 库。
  2. 创建主窗口:我们定义了一个 FileSearchApp 类,继承自 QMainWindow,并在其构造函数中设置窗口标题和大小。
  3. 布局和部件:我们创建了一个主窗口部件 central_widget,并设置了一个垂直布局 QVBoxLayout。在布局中添加了标签、按钮、输入框和列表框。
  4. 选择目录select_directory 方法使用 QFileDialog 让用户选择一个目录,并显示在标签上。
  5. 搜索文件search_files 方法遍历选定目录中的所有文件,如果文件名包含搜索关键词,则将其路径添加到结果列表中。

运行程序

运行上述代码后,你将看到一个窗口,可以选择目录并输入文件名进行搜索,结果将显示在列表中。

效果图:


说明

这个项目展示了如何使用Python和PyQt5创建一个图形用户界面(GUI)应用程序,并实现了基本的文件查询功能。希望这个项目对你有所帮助,并激发你进一步探索和学习更多的编程技巧和项目。继续努力,祝你在编程的旅程中取得更多的成果!🚀

相关类型推荐

如果你对这个项目感兴趣,以下是一些相关类型的项目推荐:

  1. 文件管理工具:创建一个更复杂的文件管理工具,支持文件的复制、移动、删除和重命名等操作。
  2. 文本编辑器:使用Python和PyQt5创建一个简单的文本编辑器,支持基本的文本编辑功能,如打开、保存和编辑文本文件。
  3. 图片浏览器:开发一个图片浏览器,允许用户浏览和查看指定目录中的图片文件。
  4. 音乐播放器:创建一个简单的音乐播放器,支持播放、暂停和停止音乐文件。

总结

本文介绍了如何使用Python和PyQt5创建一个简单的文件查询工具。通过这个项目,你学习了以下内容:

  • 如何导入必要的库并创建主窗口。
  • 如何设置窗口的布局和添加各种部件,如标签、按钮、输入框和列表框。
  • 如何使用QFileDialog选择目录。
  • 如何遍历目录并搜索文件。

结论

通过这个项目,你学习了如何使用Python和PyQt5创建一个简单的文件查询工具,并实现了目录选择和文件搜索功能。希望这个项目对你有所帮助!继续探索和学习,祝你在编程的旅程中取得更多的成果!欢迎在评论区留言。继续探索和学习,祝你在深度学习的旅程中取得更多的成果!🚀


希望这个博客对你有所帮助!如果你有任何问题需要进一步的指导,请随时提问。继续加油! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIY若依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值