• PyQt5 在状态栏添加控件 QStatusBar


    看别人的GUi界面的状态栏都有许多控件,感觉很Nice,网上找了些,感觉还是自己写一个号点。

    上代码:

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import QTimer
    
    class StatusDemo(QMainWindow):
        label_used_time_text = 0
        def __init__(self,parent=None):
            super(StatusDemo, self).__init__(parent)
            self.test_time = QTimer()
            self.test_time.timeout.connect(self.time_convert)
            self.test_time.start(1000)
    
            #实例化菜单栏
            bar=self.menuBar()
            #添加父菜单
            file=bar.addMenu('File')
            #添加子菜单
            file.addAction('show')
            #当菜单对象被点击时,触发绑定的自定义的槽函数
            file.triggered[QAction].connect(self.processTrigger)
    
            #设置当行文本输入框为中间控件
            self.setCentralWidget(QTextEdit())
    
            #实例化状态栏
            self.statusBar=QStatusBar()
            self.statusBar_1 = QLabel('{:<40}'.format('一号坑'))
            self.statusBar_2 = QLabel('{:^40}'.format('二号坑'))
            self.statusBar_3 = QLabel('{:>40}'.format('三号坑'))
            self.statusBar_4 = QLabel('{:<40}'.format('四号坑'))
    
            self.statusBar.addWidget(self.statusBar_1, 1)
            self.statusBar.addWidget(self.statusBar_2, 1)
            self.statusBar.addWidget(self.statusBar_3, 1)
            self.statusBar.addWidget(self.statusBar_4, 1)
            self.setWindowTitle('QStatusBar例子')
    
            #设置状态栏,类似布局设置
            self.setStatusBar(self.statusBar)
    
        def time_convert(self):
            self.label_used_time_text += 1
            hour = int(self.label_used_time_text // 3600)
            minute = int((self.label_used_time_text % 3600) // 60)
            second = int(self.label_used_time_text % 60)
            fmt = '四号坑:{:0>2d}:{:0>2d}:{:0>2d}'.format(hour,minute,second)
            self.statusBar_4.setText(fmt)
    
        def processTrigger(self,q):
            if (q.text()=='show'):
                #设置状态栏的显示文本以及显示时间
                self.statusBar.showMessage(q.text()+'菜单选项被点击了',5000)
    
    
    if __name__ == '__main__':
        app=QApplication(sys.argv)
        demo=StatusDemo()
        demo.show()
        sys.exit(app.exec_())

    这里借用了别人的部分代码。 感兴趣的可以去看看

    分析:

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import QTimer
    
    class StatusDemo(QMainWindow):
        label_used_time_text = 0
        def __init__(self,parent=None):
            super(StatusDemo, self).__init__(parent)

    常规

            self.test_time = QTimer()
            self.test_time.timeout.connect(self.time_convert)
            self.test_time.start(1000)

    添加一个计时器

            #实例化菜单栏
            bar=self.menuBar()
            #添加父菜单
            file=bar.addMenu('File')
            #添加子菜单
            file.addAction('show')
            #当菜单对象被点击时,触发绑定的自定义的槽函数
            file.triggered[QAction].connect(self.processTrigger)
    
            #设置当行文本输入框为中间控件
            self.setCentralWidget(QTextEdit())

    这是他人代码,意为添加一个具有一个子菜单的菜单栏父菜单,并关联点击槽函数processTrigger

            self.statusBar_1 = QLabel('{:<40}'.format('一号坑'))
            self.statusBar_2 = QLabel('{:^40}'.format('二号坑'))
            self.statusBar_3 = QLabel('{:>40}'.format('三号坑'))
            self.statusBar_4 = QLabel('{:<40}'.format('四号坑'))
    
            self.statusBar.addWidget(self.statusBar_1, 1)
            self.statusBar.addWidget(self.statusBar_2, 1)
            self.statusBar.addWidget(self.statusBar_3, 1)
            self.statusBar.addWidget(self.statusBar_4, 1)

    此处添加了4个QLabel文本控键,并添加了文本。使用字符串的format指定对齐方式。

    statusBar的addWidget函数

    addWidget(widget[,stretch=0])

    参数类型:

    widget - PySide2.QtWidgets.QWidget

    stretch - int

    将给定的窗口小部件添加到此状态栏中,如果该窗口小部件不是此QStatusBar对象的子级,则将其重新父级化。当状态栏增大和缩小时,stretch参数用于为给定的小部件计算合适的大小。默认拉伸因子为0,即为窗口小部件提供最小的空间。窗口小部件位于第一个永久窗口小部件的最左侧(请参见addPermanentWidget()),并且可能会被临时消息遮盖。

    stretch参数会为部件计算合适的大小,主窗口在拉申或缩小时不跟着改变。

            self.statusBar.addWidget(self.statusBar_1)
            self.statusBar.addWidget(self.statusBar_2)
            self.statusBar.addWidget(self.statusBar_3)
            self.statusBar.addWidget(self.statusBar_4)

            self.statusBar.addWidget(self.statusBar_1, 1)
            self.statusBar.addWidget(self.statusBar_2,1)
            self.statusBar.addWidget(self.statusBar_3,1)
            self.statusBar.addWidget(self.statusBar_4,1)

    结果:

     

     需要注意的是控键会被statusBar.showMessage以及statusTip覆盖,所以在设计项目是需注意这一点。

    以前-好记性不如烂笔头 现在-好记性不如烂键盘
  • 相关阅读:
    django集成django-xadmin
    Django设置 DEBUG=False后静态文件无法加载解决
    Django ORM必会的查询方法
    django admin-过滤器
    Django settings.py 中设置访问 MySQL 数据库【一种是直接在 settings.py 文件中直接写数据库信息,另一种是读文件获取数据库信息】
    django-admin之ModelAdmin最全解释
    SPL(Standard PHP Library 标准PHP类库)
    rsync 数据同步
    PHP 安装memcache.so 和memcached.so
    linux 安装memcached
  • 原文地址:https://www.cnblogs.com/gexbooks/p/14865840.html
Copyright © 2020-2023  润新知