2

我正在尝试学习 Python 和 PyQt4 GUI。我想将日期/时间从操作系统打印到标签上的主窗口。我知道有一个 DateTimeEdit 小部件可以让用户查看(但也可以编辑——我不想要)时间,就像这里的情况一样。我想总是直接从操作系统打印它。我的研究发现了 QDateTime 对象,但文档并未表明它们会发出任何类型的信号,这些信号在经过一定时间后会有用。所以我猜我必须轮询它,如果我不希望它阻塞,这将需要多线程。有没有更优雅的方式来做到这一点,或者我正在考虑这样做的唯一方式?

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

谢谢。

4

1 回答 1

7
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()- 就是这样。
于 2013-07-30T22:15:45.087 回答