Pyqt5怎么实现多线程文件搜索

  介绍

这篇文章将为大家详细讲解有关Pyqt5怎么实现多线程文件搜索,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我采用的是Pyqt5,所以需要先安装Pyqt5模块

直接cmd命令输入

pip  install  Pyqt5

闲言少叙,上代码! !

#, - *安康;编码:utf-8  - * -   #,@Time ,:, 2018 \ \ 15日20:39   :#,@Author  Tang ,东距   #,@File ,: FileSearch02.py   得到PyQt5.QtCore  import  *   得到PyQt5.QtWidgets  import  *   得到PyQt5.QtGui  import  QIcon   import 系统   import 操作系统   import 线程   class  fileSearchThread (QThread):   时间=sinOut 才能;pyqtSignal (str)   #,才能自定义信号,执行运行()函数时,从相关线程发射此信号   def 才能__init__(自我,键):   ,,,超级(). __init__ ()   ,,,self.key =,关键   def 才能运行(自我):   ,,,线程=[]   ,,,path =, (r" c: \ \“, r" d: \ \“,, r" e: \ \“,, r" f: \ \“)   ,,,#通过多线程对windows下的多个盘符进行文件的遍历查找   ,,,for  each 拷贝路径:   ,,,,,t =, threading.Thread(目标=self.search, arg游戏=(self.key,每个))   ,,,,,threads.append (t)   ,,,,,t.start ()   ,,,for 小姐:范围(len(线程)):拷贝,#将主线程阻塞   ,,,,,线程[我]. join ()   ,,,print(“搜索结束“)   def 才能搜索(自我、关键字,路径):   ,,,for  dirpath,,目录名,,filenames 拷贝os.walk(路径):   ,,,,,for  filename 拷贝文件名:   ,,,,,,,if  filename.__contains__(关键词):   ,,,,,,,,,印刷(os.path.join (dirpath,文件名))   ,,,,,,,,,self.sinOut.emit (os.path.join (dirpath,文件名))   ,,,,,for  folder 拷贝目录名:   ,,,,,,,if  folder.__contains__(关键词):   ,,,,,,,,,印刷(os.path.join (dirpath、文件夹))   ,,,,,,,,,self.sinOut.emit (os.path.join (dirpath、文件夹))   class  fileSearch (QListWidget):   def 才能__init__(自我):   ,,,超级(). __init__ ()   ,,,self.Ui ()   def 才能;Ui(自我):   ,,,self.key=, QLineEdit ()   ,,,self.bt=QPushButton(“搜索“)   ,,,self.result =, QListWidget ()   ,,,self.bt.clicked.connect (self.ButtonClicked), #按钮单击信号绑定到槽   ,,,#,self.line.editingFinished.connect (self.Action)   ,,,self.key.editingFinished.connect (self.ButtonClicked)   ,,,grid =, QGridLayout ()   ,,,grid.setSpacing(10), #,创建标签之间的空间   ,,,grid.addWidget (self.key,, 1,, 0), #,(1,0)表示显示的位置   ,,,grid.addWidget (self.bt, 1, 1)   ,,,grid.addWidget (self.result,, 2,, 0,, 5日,2),#,指定组件的跨行和跨列的大小,指定这个元素跨5行显示   ,,,self.setLayout(网格)   ,,,for 小姐:拷贝范围(1100):   ,,,,,self.result.addItem(“搜索“+ str (i) +“个项目“)   ,,,self.result.itemClicked.connect (self.Clicked)   ,,,self.setGeometry (300,, 300,, 500,, 500)   ,,,self.setWindowTitle(& # 39;文件搜索& # 39;)   ,,,self.setWindowIcon (QIcon (& # 39; icon.jpg& # 39;))   ,,,self.show ()   def 才能点击(自我,,项):   ,,,QMessageBox.information(自我,,“ListWidget",,“你点击:,“,+,item.text ())   ,,,os.startfile (item.text()), #打开文件   def 才能ButtonClicked(自我):   ,,,#,创建新线程,将自定义信号sinOut连接到slotAdd()槽函数   ,,,keyword =, self.key.text ()   ,,,self.result.clear ()   ,,,self.thread=fileSearchThread(关键字)   ,,,self.thread.sinOut.connect (self.slotAdd)   ,,,self.thread.start ()   def 才能slotAdd(自我,文件名):   ,,,self.result.addItem (str(文件名)   if  __name__ ==, & # 39; __main__ # 39;:   时间=app 才能;QApplication (sys.argv)   时间=ex 才能;fileSearch ()   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Pyqt5怎么实现多线程文件搜索