Python+PyQt5来实现文件高速查找

 更新时间:2023年07月19日 11:37:12   作者:W金刚葫芦娃W  
这篇文章主要为大家详细介绍了如何模拟Everything,即通过python+PyQt5来实现可视化文件的高速查找,文中的示例代码讲解详细,需要的可以参考一下

一、功能

模拟Everything,通过python+PyQt5来实现可视化文件的高速查找。

二、代码

import os
import threading
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QTextBrowser, QPushButton, QComboBox
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt, pyqtSignal, QObject
 
 
class FileSearchThread(QObject):
    search_result_found = pyqtSignal(str)
    search_finished = pyqtSignal()
 
    def __init__(self, disk, search_text):
        super().__init__()
        self.disk = disk
        self.search_text = search_text
        self.found_files = []
 
    def search_files(self):
        for root, dirs, files in os.walk(self.disk):
            for file in files:
                if self.search_text.lower() in file.lower():
                    file_path = os.path.join(root, file)
                    self.found_files.append(file_path)
                    self.search_result_found.emit(file_path)
 
        self.search_finished.emit()
 
 
class FileSearchApp(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('文件搜索')
        self.setGeometry(200, 600, 1340, 800)
 
        self.search_label = QLabel("搜索关键字:")
        self.search_label.setFont(QFont('Arial', 12))
        self.search_textbox = QLineEdit()
        self.search_textbox.setFont(QFont('Arial', 12))
 
        self.search_button = QPushButton('搜索')
        self.search_button.setFont(QFont('Arial', 12))
        self.search_button.clicked.connect(self.start_search)
 
 
        self.search_results = QTextBrowser()
        self.search_results.setFont(QFont('Arial', 12))
        self.search_status_label = QLabel()
        self.search_status_label.setFont(QFont('Arial', 12))
 
        layout = QVBoxLayout()
        layout.addWidget(self.search_label)
        layout.addWidget(self.search_textbox)
        layout.addWidget(self.search_button)
        layout.addWidget(self.search_status_label)
        layout.addWidget(self.search_results)
        self.setLayout(layout)
 
    def start_search(self,disks):
        disks= ['C:','D:','E:','F:']   #本地电脑的磁盘列表
        search_text = self.search_textbox.text()
        # print(disk)
        self.search_results.clear()
        self.search_status_label.setText("正在搜索...")
        self.search_status_label.adjustSize()
        for disk in disks:
            if disk and search_text:
                file_search_thread = FileSearchThread(disk, search_text)
                file_search_thread.search_result_found.connect(self.display_result)
                file_search_thread.search_finished.connect(self.search_finished)
 
                self.worker_thread = threading.Thread(target=file_search_thread.search_files)
                self.worker_thread.start()
 
    def display_result(self, file_path):
        self.search_results.append(file_path)
 
    def search_finished(self):
        self.search_status_label.setText("搜索完成")
        self.search_status_label.adjustSize()
        self.worker_thread.join()
 
 
if __name__ == '__main__':
    app = QApplication([])
    file_search_app = FileSearchApp()
    file_search_app.show()
    app.exec_()

三、运行结果

到此这篇关于Python+PyQt5来实现文件高速查找的文章就介绍到这了,更多相关Python文件查找内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解python中sort()与sorted()的区别

    深入理解python中sort()与sorted()的区别

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。这篇文章主要介绍了python中sort()与sorted()的区别,需要的朋友可以参考下
    2018-08-08
  • 使用python爬虫获取黄金价格的核心代码

    使用python爬虫获取黄金价格的核心代码

    这篇文章主要介绍了利用python爬虫获取黄金价格,需要的朋友可以参考下
    2018-06-06
  • matplotlib中legend位置调整解析

    matplotlib中legend位置调整解析

    这篇文章主要介绍了matplotlib中legend位置调整解析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • python 写一个性能测试工具(一)

    python 写一个性能测试工具(一)

    这篇文章主要介绍了利用python 写一个性能测试工具,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • Python sqlalchemy时间戳及密码管理实现代码详解

    Python sqlalchemy时间戳及密码管理实现代码详解

    这篇文章主要介绍了Python sqlalchemy时间戳及密码管理实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python实现CET查分的方法

    Python实现CET查分的方法

    这篇文章主要介绍了Python实现CET查分的方法,实例分析了Python操作链接查询的技巧,需要的朋友可以参考下
    2015-03-03
  • python扩展库numpy入门教程

    python扩展库numpy入门教程

    这篇文章主要为大家介绍了python扩展库numpy入门教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • Django自定义权限及用户分组

    Django自定义权限及用户分组

    这篇文章主要为大家介绍了Django登录权限及分组模板使用权限,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • PyQt5+QtChart实现绘制曲线图

    PyQt5+QtChart实现绘制曲线图

    QChart是一个QGraphicScene中可以显示的QGraphicsWidget。本文将利用QtChart实现曲线图的绘制,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-12-12
  • python write无法写入文件的解决方法

    python write无法写入文件的解决方法

    今天小编就为大家分享一篇python write无法写入文件的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论