pyqt5线程实时显示时间
时间: 2023-08-10 08:09:03 浏览: 109
可以使用PyQt5中的QThread和QTimer来创建一个用于实时显示时间的线程。
以下是一个示例代码:
```python
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class TimeThread(QThread):
timeSignal = pyqtSignal(str)
def run(self):
while True:
time = QDateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss")
self.timeSignal.emit(time)
self.sleep(1)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.resize(400, 300)
self.setWindowTitle("Real-time Clock")
self.timeLabel = QLabel(self)
self.timeLabel.setAlignment(Qt.AlignCenter)
self.timeLabel.setFont(QFont("Arial", 20))
self.timeLabel.setGeometry(50, 50, 300, 100)
self.timeThread = TimeThread()
self.timeThread.timeSignal.connect(self.updateTime)
self.timeThread.start()
def updateTime(self, time):
self.timeLabel.setText(time)
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个名为TimeThread的QThread子类,其中run()方法会在新的线程中运行。在run()方法中,我们使用QDateTime获取当前时间,并使用pyqtSignal将时间信号发送给主线程中的updateTime()方法。在MainWindow类中,我们创建了一个QLabel来显示时间,并创建了一个TimeThread对象来实时更新时间。最后,我们将时间信号连接到MainWindow类中的updateTime()方法,以便在主线程中更新时间标签。
运行代码后,您应该可以看到一个显示当前时间的窗口。请注意,由于我们使用了线程来更新时间标签,因此在窗口中拖动或更改窗口大小等操作不会影响时间更新。
阅读全文