Python+PyQt5來實現(xiàn)文件高速查找
更新時間:2023年07月19日 11:37:12 作者:W金剛葫蘆娃W
這篇文章主要為大家詳細介紹了如何模擬Everything,即通過python+PyQt5來實現(xiàn)可視化文件的高速查找,文中的示例代碼講解詳細,需要的可以參考一下
一、功能
模擬Everything,通過python+PyQt5來實現(xiàn)可視化文件的高速查找。
二、代碼
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來實現(xiàn)文件高速查找的文章就介紹到這了,更多相關Python文件查找內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
深入理解python中sort()與sorted()的區(qū)別
Python list內(nèi)置sort()方法用來排序,也可以用python內(nèi)置的全局sorted()方法來對可迭代的序列排序生成新的序列。這篇文章主要介紹了python中sort()與sorted()的區(qū)別,需要的朋友可以參考下2018-08-08Python sqlalchemy時間戳及密碼管理實現(xiàn)代碼詳解
這篇文章主要介紹了Python sqlalchemy時間戳及密碼管理實現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08