主要是学习多线程知识,使用的是QTime(),可是彷佛用QThread()更多一些多线程
(QThread()与QTimer()的优点再也不赘述)app
可是记下来总没错less
QSS渲染使用的是qdarkstyle,由于我一直以为这个暗黑风很帅学习
qdarkstyle在GitHub上一千多颗星,仍是很受欢迎的ui
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5 import QtCore import qdarkstyle 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(): # 计时器计时 print("#30") timer.start(1000) # 将start写成statr竟然不报错,可是找bug却找了半天 # 计时开始 workThread.start() # 当得到循环完毕的信号时,中止计时 workThread.trigger.connect(timeStop) def timeStop(): print("#38") timer.stop() print("计时结束,共计用时:", lcdNumber.value()) global sec sec = 0 if __name__ == "__main__": app = QApplication(sys.argv) top = QWidget() top.resize(300, 200) # 影藏边框 top.setWindowFlags(QtCore.Qt.FramelessWindowHint) layout = QVBoxLayout(top) lcdNumber = QLCDNumber() layout.addWidget(lcdNumber) button = QPushButton("开始") layout.addWidget(button) timer = QTimer() workThread = WorkThread() button.clicked.connect(work) # 计时结束,触发countime timer.timeout.connect(countTime) # 进行渲染 app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) top.show() sys.exit(app.exec_())
运行以后如图线程
影藏了边框code