python-pyqt5之状态栏

任务目标:

在窗口状态栏中实时显示当前日期时间

设计:右键单击,然后创建状态栏

完整代码:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(467, 181)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusBar = QtWidgets.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)

        timer = QtCore.QTimer(MainWindow)  # 创建一个QTimer计时器对象
        timer.timeout.connect(self.showtime)  # 发射timeout信号,与自定义槽函数关联
        timer.start()  # 启动计时器

    # 自定义槽函数,用来在状态栏中显示当前日期时间
    def showtime(self):
        datetime = QtCore.QDateTime.currentDateTime()  # 获取当前日期时间
        text = datetime.toString("yyyy-MM-dd HH:mm:ss")  # 对日期时间进行格式化
        self.statusBar.showMessage('当前日期时间:' + text, 0)  # 在状态栏中显示日期时间
        #或者这句MainWindow.statusBar().showMessage('当前日期时间:' + text, 0)  # 在状态栏中显示日期时间

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


import sys
if __name__ == '__main__':
    app=QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

 加入自定义槽函数和QTimer计时器对象

效果:实时显示时间

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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_()`来启动应用程序的主事件循环。 通过运行这段代码,我们可以在应用程序的状态栏上看到当前的系统时间,并且这个显示是以多线程的方式进行更新的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值