在python中自动更新日期和时间

时间:2017-06-02 10:39:30

标签: python qt date pyqt pyqt4

  1. 列表项
  2. 我试图在我的Windows上显示当前的日期和时间。时间和时间不会自动更新。当我关闭并运行我的python文件时,它获取系统日期和时间。请在下面找到我的代码

    import datetime
    import threading
    
    
    now = datetime.datetime.now()
    from PyQt4 import QtCore, QtGui
    
    try:
        _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
    
    try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig)
    
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName(_fromUtf8("Form"))
            Form.resize(400, 300)
            self.label = QtGui.QLabel(Form)
            self.label.setGeometry(QtCore.QRect(100, 110, 241, 17))
            self.label.setObjectName(_fromUtf8("label"))
    
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
    
        self.timer = QtCore.QTimer()
        self.timer.start(10 * 1000) # 10 seconds
    
        def retranslateUi(self, Form):
            Form.setWindowTitle(_translate("Form", "Form", None))
            self.label.setText(_translate("Form",QtCore.now.strftime("%Y-%m-%d %H:%M"), None))
    
    
    if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        Form = QtGui.QWidget()
        ui = Ui_Form()
        ui.setupUi(Form)
        Form.show()
        sys.exit(app.exec_())
    

1 个答案:

答案 0 :(得分:0)

您必须创建一个不时运行的计时器,并调用retranslateUi函数。

timer = QtCore.QTimer(Form)
timer.timeout.connect(lambda: ui.retranslateUi(Form))
timer.start(1000)

我们必须更新retranslateUi中的时间,我们将其修改为:

def retranslateUi(self, Form):
    now = datetime.datetime.now()
    Form.setWindowTitle(_translate("Form", "Form", None))
    self.label.setText(_translate("Form",now.strftime("%Y-%m-%d %H:%M"), None))

完整代码:

import datetime

now = datetime.datetime.now()
from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(400, 300)
        self.label = QtGui.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(100, 110, 241, 17))
        self.label.setObjectName(_fromUtf8("label"))

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        now = datetime.datetime.now()
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.label.setText(_translate("Form",now.strftime("%Y-%m-%d %H:%M"), None))

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    timer = QtCore.QTimer(Form)
    timer.timeout.connect(lambda: ui.retranslateUi(Form))
    timer.start(1000)
    Form.show()
    sys.exit(app.exec_())