要实现当北京时间发生变化时自动更新 mydateTimeEdit 里的值,可以使用 QTimer 定时器来定期更新。
首先,在 DateTimeEditDemo 类的 initUI 方法中,创建一个定时器对象,并连接到一个槽方法上。例如,我们可以创建一个名为 updateDateTime 的槽方法:def initUI(self): # 其他代码... timer = QTimer(self) timer.timeout.connect(self.updateDateTime) timer.start(1000) # 设置定时器间隔为1秒def updateDateTime(self): # 使用北京时间更新 QDateTimeEdit 的值 currentDateTime = QDateTime.currentDateTime() mydateTimeEdit.setDateTime(currentDateTime)
在 updateDateTime 方法中,我们通过调用 QDateTime.currentDateTime() 获取当前的北京时间,然后使用 setDateTime 方法将其设置给 mydateTimeEdit 控件。
最后,记得将 mydateTimeEdit 声明为 self.mydateTimeEdit,以便在其他方法中可以访问它。
完整代码示例如下:import sysfrom PyQt5.QtGui import *from PyQt5.QtWidgets import *from PyQt5.QtCore import QDate, QDateTime, QTime, QTimerclass DateTimeEditDemo(QWidget): def __init__(self): super(DateTimeEditDemo, self).__init__() self.initUI() def initUI(self): self.setWindowTitle('QDateTimeEdit例子') self.resize(300, 90) vlayout = QVBoxLayout() self.mydateTimeEdit = QDateTimeEdit(QDateTime.currentDateTime(), self) self.mydateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") vlayout.addWidget(self.mydateTimeEdit) self.setLayout(vlayout) timer = QTimer(self) timer.timeout.connect(self.updateDateTime) timer.start(1000) def updateDateTime(self): currentDateTime = QDateTime.currentDateTime() self.mydateTimeEdit.setDateTime(currentDateTime)if __name__ == '__main__': app = QApplication(sys.argv) demo = DateTimeEditDemo() demo.show() sys.exit(app.exec_())
在这个示例中,定时器每隔1秒钟触发一次,调用 self.updateDateTime 方法来更新 mydateTimeEdit 的值。这样就能实现当北京时间发生变化时,自动更新时间编辑控件的值。 |