pythonpython-3.xpyqtpyqt5qstatusbar

How to remove the divider between widgets when using `statusBar.addPermanentWidget()`?


Is it possible to remove the divider line between two widgets that were added to the status bar using .addPermanentWidget()? I suspect that it is possible, but I haven't really found any literature on how to proceed.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel


class MainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)

        statusBar = QStatusBar()
        self.setStatusBar(statusBar)
        statusBar.addPermanentWidget(QLabel("Label: "))
        statusBar.addPermanentWidget(QLabel("Data"))


app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

enter image description here


Solution

  • In order to remove the divider between the two elements you need to set the stylesheet for QStatusBar::item in either Qt Creator, or the project source.

    Qt Creator Example:

    enter image description here

    Project Source Example:

    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel
    
    
    class MainWindow(QMainWindow):
    
        def __init__(self):
            QMainWindow.__init__(self)
    
            statusBar = QStatusBar()
    
            statusBar.setStyleSheet('QStatusBar::item {border: None;}')
    
            self.setStatusBar(statusBar)
            statusBar.addPermanentWidget(QLabel("Label: "))
            statusBar.addPermanentWidget(QLabel("Data"))
    
    
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())