我正在尝试学习Python和PyQt4 GUI。我想在操作系统上打印标签上的日期/时间到主窗口。我知道有一个DateTimeEdit小部件可以让用户查看(但也可以编辑 - 我不想要的)时间,例如here。我想总是直接从操作系统中打印出来。我的研究发现了QDateTime对象,但是文档并没有表明它们会发出任何类型的信号,这些信号在经过一段时间的勾选之后会很有用。所以我猜我必须轮询它,如果我不想阻止它将需要多线程。是否有一种更优雅的方式来做这件事,还是我想要以唯一的方式做到这一点?
(我意识到用户可以只看一下任务栏,但我需要提供一些反馈,让程序在适当的时间运行)
感谢。
答案 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_())
QLabel
就足够了。QTimer
是您的朋友,如果您需要定期做某事。无需处理线程 - 信号\槽系统处理。将QTimer.timeout()
信号连接到任何可调用的设置间隔,调用start()
- 就是这样。