我在输入UI运行时的实际时间时遇到问题,文本y想要在特定时间段内进行更改。我还尝试在我的情况下使用MainWindow.update()Reloj.update(),但是它仍然存在相同的问题,将其放入循环中是一个坏主意。
我将放一些代码只是为了看看它是如何工作的
Ui由QtDesigner制作,然后导出到python。我的问题是我有一个可以显示所有内容的UI,但它不会更新时钟和文本。我想输入UI运行时的实际时间。文本也将在一定时间内更改。我想在15分钟后更改文本,但是在这种情况下,我将“延迟”设置为15秒,而Ui不变。
我也尝试使用Reloj.update()更新Ui,但是它也没有改变。
这是示例:
from PyQt5 import QtCore, QtGui, QtWidgets
import time
class 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)
""" Reloj """
time = QtCore.QTime.currentTime()
texto_reloj = time.toString('HH:mm')
if (time.second() % 2) == 0:
texto_reloj = texto_reloj[:2] + ' ' + texto_reloj[3:]
self.Reloj_2.display(texto_reloj)
""" Texto que Cambia """
vec = ['Hola','Que Tal?', 'No se toca', 'paradise']
self.cambiar_texto(vec)
def retranslateUi(self, Reloj):
_translate = QtCore.QCoreApplication.translate
Reloj.setWindowTitle(_translate("Reloj", "Reloj"))
self.Texto.setText(_translate("Reloj", "Texto que cambia"))
def showTime(self):
time = QtCore.QTime.currentTime()
text = time.toString('HH:mm')
if (time.second() % 2) == 0:
text = text[:2] + ' ' + text[3:]
self.Reloj_2.display(text)
""" Cambiar Texto cada X tiempo (ejemplo 15 Minutos) """
def cambiar_texto (self,vec):
i=0
length_string = len(vec)
time.sleep(15)
self.Texto.setText(vec[i])
if (i == 3):
i=0
else:
i+=1
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Reloj = QtWidgets.QMainWindow()
ui = Ui_Reloj()
ui.setupUi(Reloj)
Reloj.show()
sys.exit(app.exec_())
编译时没有错误,但是应该更新时钟和文本。
您不应在主GUI线程中使用time.sleep(),因为它会阻塞事件循环,而应使用QTimer。另一方面,不要修改Qt
Designer生成的代码,而是创建另一个从适当的小部件继承的类,并使用初始类来填充它。
from itertools import cycle
from PyQt5 import QtCore, QtGui, QtWidgets
class 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_())
我正在试着用java.swing做一个秒表和一个秒表我已经试过秋千了。定时器和定时器任务。你能帮帮我吗? 这是stopwatch.java课 gui/main。java几乎都是由netbeans生成的
我想用java做秒表。秋千和秒表课。java,但由于某种原因,当我运行它时,只有几秒钟有效,而小时和分钟保持在0。你能帮我吗? 这是秒表。java类 gui/main。java几乎都是由netbeans生成的
问题内容: 我想获取更新的文档。这是我的原始代码,它成功更新但没有返回文档。 我使用了toArray函数,但是这给出了错误“没有提供的回调就不能使用writeConcern”: 有任何想法吗? 问题答案: 只会向自己的回调报告受影响的文档数。 要在修改时检索文档,可以改用(以前称为)。 更新:在mongoDB中执行时,请使用;如果使用mongoose,则可以使用。以上是Node.js驱动程序。 注
问题内容: 我正在使用以下类’LoggerUtil’来登录控制台和文件’logfile.log’。控制台的日志记录工作正常。但是,登录几次后将停止记录到“ logfile.log”文件。欢迎找到有关该错误的任何建议。我附上以下代码: 我从项目的各个位置调用以下代码进行记录: 请注意,我的项目是多线程的。各个线程使用相同的文件进行日志记录。这可能是并发问题,还是只是一个红鲱鱼! 问题答案: 硬参考您
问题内容: 我有一个php文件,可打印txt文件的最后50行。但是,此文件每秒钟都会添加一次,并且希望查看该操作的“实时供稿”。如何才能做到这一点?这是php文件的代码: 问题答案: 用ajax。如果需要跨浏览器兼容性,请使用jQuery之类的库中的AJAX函数替换我提供的AJAX函数。 您将必须创建一个名为myphpfile.php的php文件(或更改上面的代码以引用正确的文件),并在其中放入以
问题内容: 我现在正在查看文本,我想每秒使用一次警报来更新该文本。 这是我完成的代码。 问题答案: 我已经设法使用警报来更新文本。 我已声明日期,因此只要使用警报文本更改日期,日期也会更新。