python-3.x PyQt5 StatusBar分隔符

h9vpoimq  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(110)

如何将垂直separators添加到statusbar
(Red arrows)在这个屏幕截图。

如果我成功了,我如何显示选定的LineColumn
(Blue arrows)在同一个屏幕截图。
这是Windows的。

eivgtgni

eivgtgni1#

void QStatusBar::addPermanentWidget(QWidget *widget,int stretch = 0)
将给定的小部件永久添加到此状态栏,如果它不是此QStatusBar对象的子对象,则重新设置小部件的父级。stretch参数用于在状态栏变大和缩小时计算给定小部件的合适大小。默认拉伸因子为0,即为小部件提供最小空间。

import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QStatusBar, QLabel, 
                             QPushButton, QFrame)

class VLine(QFrame):
    # a simple VLine, like the one you get from designer
    def __init__(self):
        super(VLine, self).__init__()
        self.setFrameShape(self.VLine|self.Sunken)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.statusBar().showMessage("bla-bla bla")
        self.lbl1 = QLabel("Label: ")
        self.lbl1.setStyleSheet('border: 0; color:  blue;')
        self.lbl2 = QLabel("Data : ")
        self.lbl2.setStyleSheet('border: 0; color:  red;')
        ed = QPushButton('StatusBar text')

        self.statusBar().reformat()
        self.statusBar().setStyleSheet('border: 0; background-color: #FFF8DC;')
        self.statusBar().setStyleSheet("QStatusBar::item {border: none;}") 
        
        self.statusBar().addPermanentWidget(VLine())    # <---
        self.statusBar().addPermanentWidget(self.lbl1)
        self.statusBar().addPermanentWidget(VLine())    # <---
        self.statusBar().addPermanentWidget(self.lbl2)
        self.statusBar().addPermanentWidget(VLine())    # <---
        self.statusBar().addPermanentWidget(ed)
        self.statusBar().addPermanentWidget(VLine())    # <---
        
        self.lbl1.setText("Label: Hello")
        self.lbl2.setText("Data : 15-09-2019")

        ed.clicked.connect(lambda: self.statusBar().showMessage("Hello "))
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

相关问题