您不应在主GUI线程中使用time.sleep(),因为它会阻塞事件循环,而应使用QTimer。另一方面,不要修改Qt
Designer生成的代码,而是创建另一个从适当的小部件继承的类,并使用初始类来填充它。
from itertools import cyclefrom PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Reloj(object): def setupUi(self, Reloj): Reloj.setObjectName("Reloj") Reloj.resize(400, 300) self.centralWidget = QtWidgets.QWidget(Reloj) self.centralWidget.setObjectName("centralWidget") self.gridLayout = QtWidgets.QGridLayout(self.centralWidget) self.gridLayout.setContentsMargins(11, 11, 11, 11) self.gridLayout.setSpacing(6) self.gridLayout.setObjectName("gridLayout") self.Texto = QtWidgets.QLabel(self.centralWidget) self.Texto.setObjectName("Texto") self.gridLayout.addWidget(self.Texto, 0, 0, 1, 1) self.Reloj_2 = QtWidgets.QLCDNumber(self.centralWidget) self.Reloj_2.setObjectName("Reloj_2") self.gridLayout.addWidget(self.Reloj_2, 0, 1, 1, 1) Reloj.setCentralWidget(self.centralWidget) self.menuBar = QtWidgets.QMenuBar(Reloj) self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 20)) self.menuBar.setObjectName("menuBar") Reloj.setMenuBar(self.menuBar) self.mainToolBar = QtWidgets.QToolBar(Reloj) self.mainToolBar.setObjectName("mainToolBar") Reloj.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) self.statusBar = QtWidgets.QStatusBar(Reloj) self.statusBar.setObjectName("statusBar") Reloj.setStatusBar(self.statusBar) self.retranslateUi(Reloj) QtCore.QmetaObject.connectSlotsByName(Reloj) def retranslateUi(self, Reloj): _translate = QtCore.QCoreApplication.translate Reloj.setWindowTitle(_translate("Reloj", "Reloj")) self.Texto.setText(_translate("Reloj", "Texto que cambia"))class MainWindow(QtWidgets.QMainWindow, Ui_Reloj): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) timer1 = QtCore.QTimer(self, interval=1000, timeout=self.showTime) timer1.start() self.showTime() vec = ["Hola", "Que Tal?", "No se toca", "paradise"] self.texts = cycle(vec) timer2 = QtCore.QTimer(self, interval=15 * 1000, timeout=self.cambiar_texto) timer2.start() self.cambiar_texto() @QtCore.pyqtSlot() def showTime(self): time = QtCore.QTime.currentTime() text = time.toString("HH mm" if time.second() % 2 == 0 else "HH:mm") self.Reloj_2.display(text) @QtCore.pyqtSlot() def cambiar_texto(self): text = next(self.texts) self.Texto.setText(text)if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_())


