前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python pyqt5 QThread

python pyqt5 QThread

作者头像
用户5760343
发布2019-07-22 13:41:58
9260
发布2019-07-22 13:41:58
举报
文章被收录于专栏:sktjsktj

-- coding: utf-8 --

''' 【简介】 PyQT5中 QTimer例子

'''

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(2000000000):
        pass

    # 循环完毕后发出信号
    self.trigger.emit()

def countTime(): global sec sec += 1 # LED显示数字+1 lcdNumber.display(sec)

def work(): # 计时器每秒计数 timer.start(1000) # 计时开始 workThread.start() # 当获得循环完毕的信号时,停止计数 workThread.trigger.connect(timeStop)

def timeStop(): timer.stop() print("运行结束用时", lcdNumber.value()) global sec sec = 0

if name == "main": app = QApplication(sys.argv) top = QWidget() top.resize(300, 120)

# 垂直布局类QVBoxLayout
layout = QVBoxLayout(top)
# 加个显示屏
lcdNumber = QLCDNumber()
layout.addWidget(lcdNumber)
button = QPushButton("测试")
layout.addWidget(button)

timer = QTimer()
workThread = WorkThread()

button.clicked.connect(work)
# 每次计时结束,触发 countTime
timer.timeout.connect(countTime)

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

-- coding: utf-8 --

''' 【简介】 PyQT5中 QThread 例子

'''

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

class MainWidget(QWidget): def init(self, parent=None): super(MainWidget, self).init(parent) self.setWindowTitle("QThread 例子") self.thread = Worker() self.listFile = QListWidget() self.btnStart = QPushButton('开始') 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_inf):
    self.listFile.addItem(file_inf)

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)
        # 线程休眠2秒
        self.sleep(2)

if name == "main": app = QApplication(sys.argv) demo = MainWidget() demo.show() sys.exit(app.exec_())

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • -- coding: utf-8 --
  • -- coding: utf-8 --
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档