PyQt4:将OS日期/时间打印到标签

时间:2013-07-30 20:14:53

标签: python user-interface pyqt pyqt4

我正在尝试学习Python和PyQt4 GUI。我想在操作系统上打印标签上的日期/时间到主窗口。我知道有一个DateTimeEdit小部件可以让用户查看(但也可以编辑 - 我不想要的)时间,例如here。我想总是直接从操作系统中打印出来。我的研究发现了QDateTime对象,但是文档并没有表明它们会发出任何类型的信号,这些信号在经过一段时间的勾选之后会很有用。所以我猜我必须轮询它,如果我不想阻止它将需要多线程。是否有一种更优雅的方式来做这件事,还是我想要以唯一的方式做到这一点?

(我意识到用户可以只看一下任务栏,但我需要提供一些反馈,让程序在适当的时间运行)

感谢。

1 个答案:

答案 0 :(得分:6)

import sys
from PyQt4 import QtCore, QtGui


class MyWin(QtGui.QWidget):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.label = QtGui.QLabel('time', self)
        self.setLayout(QtGui.QVBoxLayout())
        self.layout().addWidget(self.label)

        self.timer = QtCore.QTimer(self)
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.displayTime)
        self.timer.start()

    def displayTime(self):
        self.label.setText(QtCore.QDateTime.currentDateTime().toString())


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    win = MyWin()
    win.show()
    sys.exit(app.exec_())
  1. 如果您只需要显示日期\时间,简单的QLabel就足够了。
  2. QTimer是您的朋友,如果您需要定期做某事。无需处理线程 - 信号\槽系统处理。将QTimer.timeout()信号连接到任何可调用的设置间隔,调用start() - 就是这样。