实现效果是一个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\";\n"
"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"))