pyqt5 在状态栏显示系统时间,如何启线程
时间: 2023-09-06 22:02:49 浏览: 121
状态栏显示时间
3星 · 编辑精心推荐
在PyQt5中可以使用多线程来实现在状态栏显示系统时间的功能。以下是一个示例代码:
```python
import sys
import threading
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.statusBar().showMessage("")
self.thread = threading.Thread(target=self.update_time)
self.thread.daemon = True
self.thread.start()
self.show()
def update_time(self):
while True:
# 获取当前系统时间
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 更新状态栏的显示内容
self.statusBar().showMessage("当前时间: " + current_time)
time.sleep(1)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个继承自QMainWindow的窗口类MainWindow。在初始化函数中,我们首先调用了父类的初始化函数,并创建了一个空的状态栏。然后,我们创建了一个新的线程,并通过调用`start()`方法来启动线程。这里我们使用了`threading`模块来创建线程,可以根据自己的需求选择其他方法。
在`update_time`函数中,我们使用一个循环来不断更新状态栏的显示内容。首先,我们通过`datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")`获取当前系统时间,并将其格式化为字符串。然后,我们调用`self.statusBar().showMessage()`方法来更新状态栏的显示内容。最后,我们使用`time.sleep(1)`函数使线程休眠1秒钟,以便每秒更新一次状态栏的时间显示。
在`if __name__ == "__main__":`语句中,我们创建了一个QApplication实例,并将其赋值给`app`变量。然后,我们创建了MainWindow实例,并最后调用`app.exec_()`来启动应用程序的主事件循环。
通过运行这段代码,我们可以在应用程序的状态栏上看到当前的系统时间,并且这个显示是以多线程的方式进行更新的。
阅读全文