0509QThread

#这个例子的变量不用传递,直接被函数调用?

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

global sec
sec = 0

class myThread(QThread):
    trigger = pyqtSignal()

    def __init__(self):
        super(myThread, self).__init__()

#处理倒数的线程,处理完发射信号
    def run(self):
        for i in range(2000000000):
            pass

        self.trigger.emit()

#timer每timeout一次(1000毫秒)计数一次
def countTime():
    global sec
    sec += 1
    lcdNumber.display(sec)

#启动计时和倒数线程
def work():
    #计时器倒计时1000毫秒
    timer.start(1000)
    thread.start()
    #
    thread.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)
    # 处理UI布局
    layout = QVBoxLayout(top)
    lcdNumber = QLCDNumber()
    layout.addWidget(lcdNumber)
    btn = QPushButton("Test")
    layout.addWidget(btn)

    #像这里的变量timer为什么能直接被函数读取,不用传递?
    timer = QTimer()
    thread = myThread()
    #开始按键点击后开始
    btn.clicked.connect(work)
    #每过1秒出发一次countTime函数
    timer.timeout.connect(countTime)

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值