pyqt多线程QThread
'''
start():启动线程
wait():阻止线程,直到满足如下条件之一
(1)与此QThread对象关联的线程已完成执行(即从run返回时),如果线程完成执行,此函数返回True,如果线程尚未启动,也返回True
(2)等待时间的单位是毫秒,如果时间是ULONG_MAX(默认值·),则等待,永远不会超时(线程必须从run返回),如果等待超时,此函数将会返回False
sleep():强制当前线程睡眠多少秒
QThread类中的常用信号
started:在开始执行run函数之前,从相关线程发射此信号
finished:当程序完成业务逻辑时,从相关线程发射此信号
'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
sec = 0
class WorkThread(QThread): # 创建多个任务可以建多个 WorkThread(QThread) 后面启动
timer = pyqtSignal(str) # 每隔1秒发送一次信号 str:可以传递参数
end = pyqtSignal(str) # 计数完成后发送一次信号
def run(self):
while True:
self.sleep(1) # 休眠1秒
if sec == 5:
self.end.emit(str(sec)) # 发送end信号 str:可以传递参数
break
self.timer.emit(str(sec)) # 发送timer信号 str:可以传递参数
class Counter(QWidget):
def __init__(self, parent=None):
super(Counter, self).__init__(parent)
self.setWindowTitle("使用线程类(QThread)编写计数器")
self.resize(300, 120)
layout = QVBoxLayout()
self.lcdNumber = QLCDNumber()
layout.addWidget(self.lcdNumber)
button = QPushButton('开始计数')
layout.addWidget(button)
self.workThread = WorkThread()
self.workThread.timer.connect(self.countTime)
self.workThread.end.connect(self.end)
button.clicked.connect(self.work)
self.setLayout(layout)
def countTime(self, secs):
global sec
sec += 1
print(secs)
self.lcdNumber.display(sec)
def end(self, secs):
print(secs)
QMessageBox.information(self, '消息', '计数结束', QMessageBox.Ok)
def work(self):
self.workThread.start() # 多个任务可以创建多self.workThread.start()
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Counter()
form.show()
sys.exit(app.exec_())
看了这么多帖子,第一次看看到这么有内涵的!https://www.2kdy.com
读了楼主的帖子,顿时马桶就通了。。。https://www.2kdy.com
听楼主一席话,省我十本书!https://www.xjtv1.com
楼主人气很旺!https://www.xjtv1.com
TRX能量租赁 - 0.8TRX=13万能量 直接节省80%!无视对方有没有U或者是否交易所- 复制地址【TAZdAh5LU55aUPPZkgF4rupQwg6inQ5J5X】转 0.8 TRX即可0手续费转账!TG机器人频道:@xingtahttps://www.23123.top/
突然觉得楼主说的很有道理,赞一个!https://www.2kdy.com
TRX能量租赁 - 0.8TRX=13万能量 直接节省80%!无视对方有没有U或者是否交易所- 复制地址【TAZdAh5LU55aUPPZkgF4rupQwg6inQ5J5X】转 0.8 TRX即可0手续费转账!TG机器人频道:@xingtahttps://www.23123.top/
楼主的帖子实在是写得太好了。文笔流畅,修辞得体!https://www.2kdy.com
楼主是在找骂么?https://www.2kdy.com
TRX能量租赁 - 0.8TRX=13万能量 直接节省80%!无视对方有没有U或者是否交易所- 复制地址【TAZdAh5LU55aUPPZkgF4rupQwg6inQ5J5X】转 0.8 TRX即可0手续费转账!TG机器人频道:@xingtahttps://www.23123.top/
管它三七二十一!https://www.2kdy.com