PyQt5高频刷新label样例Demo
实现效果是一个0-100之间的随机数字,高频在label中不断刷新,不会导致界面卡顿
control_refresh.py
#!/usr/bin/env python # encoding: utf-8 @author: JHC @license: None @contact: JHC000abc@gmail.com @file: control_refresh.py @time: 2022/07/20/ 18:50 @desc: from PyQt5.QtWidgets import QWidget, QApplication from PyQt5.QtCore import Qt, pyqtSignal import refresh_ui import numpy as np from threading import Thread import time class ExitWindow(QWidget): refresh_single = pyqtSignal(int) def __init__(self): QWidget.__init__(self) self.ui = refresh_ui.Ui_Form() self.ui.setupUi(self) self.refresh_single.connect(self.label_show) Thread(target=self.send).start() def label_show(self,num): self.ui.label.setText("") self.ui.label.setText(str(num)) def send(self): while True: num = np.random.randint(1, 101, 1)[0] time.sleep(0.001) self.refresh_single.emit(num) if __name__ == "__main__": import sys app = QApplication(sys.argv) myForm = ExitWindow() myForm.show() sys.exit(app.exec())
refresh_ui.py
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(620, 570) self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setObjectName("gridLayout") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem1) self.label = QtWidgets.QLabel(Form) self.label.setStyleSheet("font: 75 24pt "Agency FB"; " "color: rgb(255, 0, 0);") self.label.setObjectName("label") self.verticalLayout.addWidget(self.label, 0, QtCore.Qt.AlignHCenter) spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem2) self.verticalLayout.setStretch(0, 10) self.verticalLayout.setStretch(1, 5) self.verticalLayout.setStretch(2, 10) self.horizontalLayout.addLayout(self.verticalLayout) spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem3) self.horizontalLayout.setStretch(0, 1) self.horizontalLayout.setStretch(1, 10) self.horizontalLayout.setStretch(2, 1) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "show_label"))
下一篇:
带你刷(牛客网)C语言百题(第四天)