【问题标题】:Why QWidget behaves differently when it is inherited为什么QWidget在继承时表现不同
【发布时间】:2020-04-22 10:00:11
【问题描述】:

当我使用继承的QWidget时,边距和间距没有背景颜色,不像直接使用QWidget(代码基本相同)。

纯 QWidget:

class App(QWidget):

    def __init__(self):
        super().__init__()        
        self.start()       

    def start(self):
        self.layout = QHBoxLayout()

        self.layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(self.layout)   

        self.setGeometry(10, 10, 500, 100) 

        grid_layout = QGridLayout()
        grid_layout.setSpacing(10)

        widget = QWidget()
        widget.setLayout(grid_layout)        
        widget.setStyleSheet('background: green')

        grid_layout.addWidget(QLabel("first"), 0, 0)
        grid_layout.addWidget(QLabel("second"), 0, 1)
        grid_layout.addWidget(QLabel("third"), 0, 2)        

        self.layout.addWidget(widget)
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = App()
    #ex.start_card_holder()
    sys.exit(app.exec_())

继承的QWidget:

class App(QWidget):

    ....

    class MainWidget(QWidget):
        def __init__(self):
            QWidget.__init__(self)            

    def start(self):
        ...

        widget = App.MainWidget()
        ...

谁能告诉我我做错了什么?

【问题讨论】:

    标签: python python-3.x pyqt pyqt5 qtstylesheets


    【解决方案1】:

    必须清楚以下概念才能理解行为:

    在您的情况下,如果是 QWidget,则“小部件”会被绘制,但如果是 MainWidget,则不会。

    要检查我的指示,只需使用上述问题的答案之一启用背景颜色:

    # ...
    widget = App.MainWidget()
    widget.setAttribute(Qt.WA_StyledBackground, True)
    # ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-08
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 2013-07-01
      • 2014-06-09
      • 1970-01-01
      相关资源
      最近更新 更多