婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Pyqt5 實現多線程文件搜索的案例

Pyqt5 實現多線程文件搜索的案例

熱門標簽:百應ai電銷機器人鄭州 西藏快速地圖標注地點 長春人工智能電銷機器人官網 女王谷地圖標注 地圖標注推廣單頁 如何在地圖標注文字 ai地圖標注 廈門crm外呼系統如何 n400電話申請多少錢

我學Java的時候也用Swing做了一個文件搜索的小程序,但界面真的挺丑的,現在學了點python,感覺python是最簡單的語言,沒有之一。 (大家沒事都可以來學的,真的很簡單有趣哦)

我采用的是pyqt5,所以需要先安裝Pyqt5模塊

直接cmd命令輸入

pip install pyqt5

閑言少敘,上代碼!!

# -*- coding: utf-8 -*-
# @Time  : 2018\9\15 20:39
# @Author : Tang weiyang
# @File  : FileSearch02.py
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
import sys
import os
import threading
class fileSearchThread(QThread):
  sinOut = pyqtSignal(str)
  # 自定義信號,執行run()函數時,從相關線程發射此信號
  def __init__(self,key):
    super().__init__()
    self.key = key
  def run(self):
    threads=[]
    path = [r"c:\\", r"d:\\", r"e:\\", r"f:\\"]
    #通過多線程對windows下的多個盤符進行文件的遍歷查找
    for each in path:
      t = threading.Thread(target=self.search, args=(self.key,each,))
      threads.append(t)
      t.start()
    for i in range(len(threads)): #將主線程阻塞
      threads[i].join()
    print("搜索結束")
  def search(self,keyword, path):
    for dirpath, dirnames, filenames in os.walk(path):
      for filename in filenames:
        if filename.__contains__(keyword):
          print(os.path.join(dirpath, filename))
          self.sinOut.emit(os.path.join(dirpath, filename))
      for folder in dirnames:
        if folder.__contains__(keyword):
          print(os.path.join(dirpath,folder))
          self.sinOut.emit(os.path.join(dirpath,folder))
class fileSearch(QListWidget):
  def __init__(self):
    super().__init__()
    self.Ui()
  def Ui(self):
    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(grid)
    for i in range(1,100):
      self.result.addItem("搜索"+str(i)+"個項目")
    self.result.itemClicked.connect(self.Clicked)
    self.setGeometry(300, 300, 500, 500)
    self.setWindowTitle('文件搜索')
    self.setWindowIcon(QIcon('icon.jpg'))
    self.show()
  def Clicked(self, item):
    QMessageBox.information(self, "ListWidget", "You clicked: " + item.text())
    os.startfile(item.text()) #打開文件
  def ButtonClicked(self):
    # 創建新線程,將自定義信號sinOut連接到slotAdd()槽函數
    keyword = self.key.text()
    self.result.clear()
    self.thread=fileSearchThread(keyword)
    self.thread.sinOut.connect(self.slotAdd)
    self.thread.start()
  def slotAdd(self,filename):
    self.result.addItem(str(filename))
if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = fileSearch()
  sys.exit(app.exec_())

這個小程序可以搜索本地所有的文件,時間大概在10秒左右,點擊文件的地址,就可以打開這個文件.多線程這個有點卡殼,然后寫的很變扭.

這個小程序還有一個小感悟:

涉及到GUI的程序最好要將UI界面和數據處理(還包括大批量文件的讀取,循環計算),否則會導致UI界面無響應,這一點可以參考我的代碼,通過一個多線程很好解決這個問題

線程之間的信息傳遞,可以通過信號和槽完成,

sinOut = pyqtSignal(str) #自定義一個信號槽
self.thread.sinOut.connect(self.slotAdd)#信號綁定到槽
self.sinOut.emit(os.path.join(dirpath,folder)) #發射信號

pyqt的布局真的很好用,GridLayout真的超級好用

效果圖如下

補充:pyqt5多線程-簡單例子

一、主要代碼邏輯

from PyQt5 import QtWidgets, QtCore
from testqt.TEST_QT_FROM import Ui_Dialog
import sys
from PyQt5.QtCore import *
import time

# 繼承QThread
class Runthread(QtCore.QThread):
  # python3,pyqt5與之前的版本有些不一樣
  # 通過類成員對象定義信號對象
  _signal = pyqtSignal(str)
 
  def __init__(self):
    super(Runthread, self).__init__()
 
  def __del__(self):
    self.wait()
 
  def run(self):
    print("run 666")
    self._signal.emit("run 666"); # 信號發送
 
class TestQtFromC(QtWidgets.QWidget, Ui_Dialog):
  text =""
  def __init__(self):
    super(TestQtFromC, self).__init__()
    self.setupUi(self)
 
  #click
  def timer_click(self):
    self.thread = Runthread() # 創建線程
    self.thread._signal.connect(self.callbacklog) # 連接信號
    self.thread.start() # 開始線程
 
  # callback
  def callbacklog(self, msg):
    self.text =self.text+time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime())+msg+ "\n"
    print(self.text)
    # 回調數據輸出到文本框
    self.textEdit.setText(self.text);
 
if __name__ == "__main__":
  app = QtWidgets.QApplication(sys.argv)
  mTestQtFromC = TestQtFromC()
  mTestQtFromC.show()
  sys.exit(app.exec_())

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • python GUI庫圖形界面開發之PyQt5簡單繪圖板實例與代碼分析
  • PyQt5多線程防卡死和多窗口用法的實現
  • python GUI庫圖形界面開發之PyQt5多線程中信號與槽的詳細使用方法與實例
  • PyQt5中多線程模塊QThread使用方法的實現
  • PYQT5開啟多個線程和窗口,多線程與多窗口的交互實例
  • PyQt5 GUI 接收UDP數據并動態繪圖(多線程間信號傳遞)

標簽:渭南 綿陽 黔東 亳州 內江 廊坊 興安盟 拉薩

巨人網絡通訊聲明:本文標題《Pyqt5 實現多線程文件搜索的案例》,本文關鍵詞  Pyqt5,實現,多,線程,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pyqt5 實現多線程文件搜索的案例》相關的同類信息!
  • 本頁收集關于Pyqt5 實現多線程文件搜索的案例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产视频视频一区| 欧美mv日韩mv国产网站| youjizz国产精品| 欧美一区二区三区白人| 亚洲最大成人网4388xx| av一区二区三区四区| 中文字幕久久午夜不卡| 精品在线你懂的| 日韩亚洲欧美一区二区三区| 日日夜夜一区二区| 欧美成人综合网站| 国产成人啪免费观看软件| 国产精品美女久久久久久久久久久| 丁香婷婷综合五月| 亚洲综合色噜噜狠狠| 欧美性受极品xxxx喷水| 日韩电影免费一区| 精品久久久影院| 不卡电影免费在线播放一区| 亚洲欧美日本在线| 欧美男男青年gay1069videost| 亚洲va韩国va欧美va| av影院午夜一区| 丝袜脚交一区二区| 精品福利一二区| a4yy欧美一区二区三区| 亚洲宅男天堂在线观看无病毒| 欧美色综合网站| 韩国女主播一区| 国产精品嫩草久久久久| 在线免费亚洲电影| 久久99热这里只有精品| 久久精品亚洲国产奇米99| 色天使久久综合网天天| 青青草一区二区三区| 国产亚洲欧美日韩在线一区| 91亚洲精品久久久蜜桃| 免费看欧美美女黄的网站| 亚洲精品一线二线三线无人区| 国产成人精品免费一区二区| 亚洲欧美激情一区二区| 日韩欧美一级二级三级久久久| 福利电影一区二区三区| 亚洲成人一区二区在线观看| 精品蜜桃在线看| 91麻豆国产精品久久| 久久精品99国产精品| 国产精品国产三级国产aⅴ中文 | 三级久久三级久久| 欧美激情一区二区三区不卡 | 国产成人免费视频精品含羞草妖精| 亚洲欧洲成人精品av97| 日韩一区二区三区电影在线观看| eeuss鲁一区二区三区| 国模一区二区三区白浆| 日韩成人午夜电影| 樱花影视一区二区| 亚洲欧洲成人精品av97| 国产女主播视频一区二区| 欧美精品在线观看一区二区| 91网页版在线| 成人一区二区三区中文字幕| 国产综合久久久久影院| 男女性色大片免费观看一区二区 | 欧美性视频一区二区三区| 国产精品一区专区| 九一久久久久久| 无吗不卡中文字幕| 亚洲国产精品久久久男人的天堂| 中文字幕永久在线不卡| 国产精品久久久久久久岛一牛影视 | 成人午夜视频在线| 九一九一国产精品| 看电视剧不卡顿的网站| 午夜精品福利一区二区蜜股av| 国产精品国产精品国产专区不蜜| 精品国产一区a| 精品国产91洋老外米糕| 日韩一级免费观看| 91首页免费视频| 91九色02白丝porn| 欧美在线综合视频| 91精品国产91久久久久久最新毛片 | 91视频www| 欧美亚洲动漫制服丝袜| 51精品久久久久久久蜜臀| 欧美日韩精品一区二区三区四区| 欧美日韩日日夜夜| 久久嫩草精品久久久精品| 日韩欧美高清dvd碟片| 91在线高清观看| 欧美在线观看视频一区二区三区| 国产成人在线网站| 激情亚洲综合在线| 成人精品视频.| 色呦呦一区二区三区| 欧美福利视频导航| 欧美日高清视频| 欧美日韩午夜在线视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲午夜电影在线观看| 青青草97国产精品免费观看| 麻豆freexxxx性91精品| 裸体一区二区三区| 国产福利一区二区三区在线视频| 国产精品一区专区| 欧美性videosxxxxx| 日韩高清中文字幕一区| 成人一区二区三区在线观看| 成人爱爱电影网址| 色婷婷综合久久久| 久久久精品人体av艺术| 丝袜诱惑亚洲看片| 狠狠色狠狠色综合系列| 国产成人av在线影院| 色综合中文综合网| 久久蜜臀精品av| 亚洲欧美日韩中文播放| 精品系列免费在线观看| 国产精品自在在线| 91免费版在线看| 日韩欧美一区在线| 一区二区中文字幕在线| 麻豆精品在线播放| av电影天堂一区二区在线观看| 欧美性大战久久| 欧美国产欧美综合| 日本视频中文字幕一区二区三区| 91丝袜国产在线播放| 欧美videossexotv100| 亚洲欧美激情插 | 尤物在线观看一区| 高清不卡一区二区| 欧美日韩国产小视频| 中文字幕欧美一| 国产成人精品午夜视频免费| 久久久久久黄色| 国产米奇在线777精品观看| 91精品国产综合久久久久久久久久 | 国产一区二三区好的| 色综合久久综合网| 国产日韩欧美麻豆| 成人在线视频首页| 国产精品家庭影院| 色国产精品一区在线观看| 悠悠色在线精品| 欧美高清你懂得| 日本不卡一区二区三区| 欧美日韩国产另类不卡| 日韩精品国产欧美| 日韩一区二区免费在线电影| 青青草原综合久久大伊人精品 | 国产亚洲精品资源在线26u| 国产在线精品一区二区三区不卡| 亚洲精品一区二区三区在线观看| 蜜桃久久精品一区二区| 精品日韩99亚洲| 国产成人免费高清| 男人的天堂亚洲一区| 精品91自产拍在线观看一区| 成年人午夜久久久| 亚洲一区二区精品视频| 91精品国产一区二区三区| 久久精品免费看| 国产精品美女视频| 欧美视频一区二区在线观看| 老汉av免费一区二区三区| 中国av一区二区三区| 91老师国产黑色丝袜在线| 日本v片在线高清不卡在线观看| 精品入口麻豆88视频| 97se亚洲国产综合自在线不卡 | 欧美日韩aaa| 一区二区三区四区av| 91精品国产综合久久久久久 | 欧美一区二区三级| 国产精品一区二区在线观看不卡| 国产精品国产三级国产普通话蜜臀| 91成人在线精品| 久久精品国产亚洲5555| 亚洲男人的天堂在线aⅴ视频| 在线精品视频小说1| 国产成人超碰人人澡人人澡| 性做久久久久久久免费看| 久久久综合精品| 欧美日韩dvd在线观看| 成人中文字幕合集| 奇米影视一区二区三区| 亚洲手机成人高清视频| 日韩你懂的在线观看| 色偷偷久久一区二区三区| 国精产品一区一区三区mba视频| 国产精品久久久久久久岛一牛影视| 91精品国产综合久久久久久久久久 | 久久亚洲综合色| 欧美视频中文字幕| 国产suv精品一区二区6| 九一九一国产精品| 亚洲最新视频在线观看| 国产精品久久久一本精品|