最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt5學(xué)習(xí)之QThread類的使用詳解

 更新時(shí)間:2022年12月01日 11:48:08   作者:SongYuLong的博客  
QThread是Qt線程類中最核心的底層類。要使用QThrea開(kāi)始一個(gè)線程,可以創(chuàng)建它的一個(gè)子類,然后覆蓋其QThread.run()函數(shù)。這篇文章就來(lái)和大家聊聊QThread類的使用,感興趣的可以學(xué)習(xí)一下

PyQt5 QThread

QThread是Qt線程類中最核心的底層類。要使用QThrea開(kāi)始一個(gè)線程,可以創(chuàng)建它的一個(gè)子類,然后覆蓋其QThread.run()函數(shù)。

class Thread(QThread):
def _init_(self):
super(Thread, self)._init_()
def run(self):
# 線程相關(guān)代碼
pass
thread = Thread()
thread.start()

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class MainWidget(QWidget):
    def __init__(self, parent=None):
        super(MainWidget, self).__init__(parent)
        self.setWindowTitle("QThread Demo")
        self.thread = Worker()
        self.listFile = QListWidget()
        self.btnStart = QPushButton("開(kāi)始")
        layout = QGridLayout(self)
        layout.addWidget(self.listFile, 0, 0, 1, 2)
        layout.addWidget(self.btnStart, 1, 1)
        self.btnStart.clicked.connect(self.slotStart)
        self.thread.sinOut.connect(self.slotAdd)

    def slotAdd(self, file_info):
        self.listFile.addItem(file_info)

    def slotStart(self):
        self.btnStart.setEnabled(False)
        self.thread.start()



class Worker(QThread):
    sinOut = pyqtSignal(str)
    def __init__(self, parent=None):
        super(Worker, self).__init__(parent)
        self.working = True
        self.num = 0

    def __del__(self):
        self.working = False
        self.wait()

    def run(self):
        while self.working == True:
            file_str = 'File index {0}'.format(self.num)
            self.num += 1
            self.sinOut.emit(file_str)
            self.sleep(2)

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

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
    
global sec
sec=0

class WorkThread(QThread):
	trigger = pyqtSignal()
	def __int__(self):
		super(WorkThread,self).__init__()

	def run(self):
		for i in range(10000000):
			pass
		
		# 循環(huán)完畢后發(fā)出信號(hào)		
		self.trigger.emit()        

def countTime():
	global  sec
	sec += 1
	# LED顯示數(shù)字+1
	lcdNumber.display(sec)          

def work():
	# 計(jì)時(shí)器每秒計(jì)數(shù)
	timer.start(1000)   
	# 計(jì)時(shí)開(kāi)始	
	workThread.start()       
	# 當(dāng)獲得循環(huán)完畢的信號(hào)時(shí),停止計(jì)數(shù)	
	workThread.trigger.connect(timeStop)  

def timeStop():
	timer.stop()
	print("運(yùn)行結(jié)束用時(shí)",lcdNumber.value())
	global sec
	sec=0

if __name__ == "__main__":  	
	app = QApplication(sys.argv) 
	top = QWidget()
	top.resize(300,120)
    
	# 垂直布局類QVBoxLayout
	layout = QVBoxLayout(top) 
    # 加個(gè)顯示屏    
	lcdNumber = QLCDNumber()             
	layout.addWidget(lcdNumber)
	button = QPushButton("測(cè)試")
	layout.addWidget(button)

	timer = QTimer()
	workThread = WorkThread()

	button.clicked.connect(work)
    # 每次計(jì)時(shí)結(jié)束,觸發(fā) countTime
	timer.timeout.connect(countTime)      

	top.show()
	sys.exit(app.exec_())

事件處理processEvents

在耗時(shí)程序時(shí)不斷調(diào)用QApplication.processEvents()就可以實(shí)現(xiàn)一邊執(zhí)行耗時(shí)程序,一邊刷新UI頁(yè)面的功能。

import sys
import time
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QListWidget, QGridLayout

class WinForm(QWidget):

    def __init__(self, parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle("實(shí)時(shí)刷新頁(yè)面Demo")
        self.listFile = QListWidget()
        self.btnStart = QPushButton('開(kāi)始')
        layout = QGridLayout(self)
        layout.addWidget(self.listFile, 0, 0, 1, 2)
        layout.addWidget(self.btnStart, 1, 1)
        self.btnStart.clicked.connect(self.slotAdd)
        self.setLayout(layout)

    def slotAdd(self):
        for n in range(10):
            str_n = 'File index {0}'.format(n)
            self.listFile.addItem(str_n)
            QApplication.processEvents()
            time.sleep(1)

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

到此這篇關(guān)于PyQt5學(xué)習(xí)之QThread類的使用詳解的文章就介紹到這了,更多相關(guān)PyQt5 QThread類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 查找文件夾下所有文件 實(shí)現(xiàn)代碼

    python 查找文件夾下所有文件 實(shí)現(xiàn)代碼

    python 查找文件夾下所有文件,需要的朋友可以參考下。
    2009-07-07
  • Python 將 CSV 分割成多個(gè)文件的示例代碼

    Python 將 CSV 分割成多個(gè)文件的示例代碼

    在本文中,我們討論了如何使用 Pandas 庫(kù)創(chuàng)建 CSV 文件, 此外,我們還討論了兩種常見(jiàn)的數(shù)據(jù)拆分技術(shù),行式數(shù)據(jù)拆分和列式數(shù)據(jù)拆分,需要的朋友可以參考下
    2023-06-06
  • Python使用metaclass實(shí)現(xiàn)Singleton模式的方法

    Python使用metaclass實(shí)現(xiàn)Singleton模式的方法

    這篇文章主要介紹了Python使用metaclass實(shí)現(xiàn)Singleton模式的方法,實(shí)例分析了Python基于metaclass實(shí)現(xiàn)單例模式的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • python sort、sorted高級(jí)排序技巧分享(key的使用)

    python sort、sorted高級(jí)排序技巧分享(key的使用)

    這篇文章主要介紹了python sort、sorted高級(jí)排序技巧(key的使用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 教你使用Python寫一個(gè)簡(jiǎn)單的JSONParser

    教你使用Python寫一個(gè)簡(jiǎn)單的JSONParser

    這篇文章主要介紹了教你使用Python寫一個(gè)簡(jiǎn)單的JSONParser,它的整個(gè)效果,有點(diǎn)類似于 python 標(biāo)準(zhǔn)庫(kù) json 的 json.load() 方法,需要的朋友可以參考下
    2023-04-04
  • django queryset相加和篩選教程

    django queryset相加和篩選教程

    這篇文章主要介紹了django queryset相加和篩選教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python快速實(shí)現(xiàn)一個(gè)線程池的示例代碼

    Python快速實(shí)現(xiàn)一個(gè)線程池的示例代碼

    當(dāng)有多個(gè)?IO?密集型的任務(wù)要被處理時(shí),我們自然而然會(huì)想到多線程。而線程池的實(shí)現(xiàn)也很簡(jiǎn)單,因?yàn)?Python?提供了一個(gè)標(biāo)準(zhǔn)庫(kù)?concurrent.futures,已經(jīng)內(nèi)置了對(duì)線程池的支持。所以本篇文章,我們就來(lái)詳細(xì)介紹一下該模塊的用法
    2022-07-07
  • 使用pandas將numpy中的數(shù)組數(shù)據(jù)保存到csv文件的方法

    使用pandas將numpy中的數(shù)組數(shù)據(jù)保存到csv文件的方法

    今天小編就為大家分享一篇使用pandas將numpy中的數(shù)組數(shù)據(jù)保存到csv文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python pip install之SSL異常處理操作

    Python pip install之SSL異常處理操作

    這篇文章主要介紹了Python pip install之SSL異常處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • python獲取外網(wǎng)ip地址的方法總結(jié)

    python獲取外網(wǎng)ip地址的方法總結(jié)

    這篇文章主要介紹了python獲取外網(wǎng)ip地址的方法,實(shí)例總結(jié)了四種常用的獲取外網(wǎng)IP地址的技巧,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

平舆县| 三门峡市| 三原县| 清苑县| 财经| 南皮县| 高淳县| 长泰县| 郧西县| 仙居县| 怀远县| 阿拉尔市| 东莞市| 泰安市| 类乌齐县| 张家界市| 都江堰市| 东乡族自治县| 繁昌县| 西昌市| 双辽市| 临洮县| 乐平市| 巴青县| 柏乡县| 馆陶县| 定结县| 惠东县| 新化县| 万年县| 黑水县| 三台县| 稻城县| 新泰市| 牟定县| 两当县| 平江县| 乐平市| 定边县| 西充县| 罗江县|