#这个例子的变量不用传递,直接被函数调用?
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_())