QWidget 中的布局在添加拉伸时使背景变为白色

我使用 PyQt5 和它的样式系统来为我的应用程序创建一个现代外观的 GUI,但我似乎无法做到这一点。

所以我有一个所有工作的服装标题栏。它有 3 个部分;一个菜单栏、一个标签和另一个菜单栏,用作关闭、最小化和最大化的标题栏按钮。我需要此标题栏为浅灰色,但如下图所示,元素之间存在空白。

现在是什么:

http://img3.mukewang.com/62a7eafc0001aaf710340562.jpg

应该是什么:

http://img4.mukewang.com/62a7eb040001254606060331.jpg

当您运行下面的示例时,您可以看到标签之间有一些空白区域。即使标签在没有样式的框内,样式也是在小部件上设置的。


#### PyQt imports....

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QMenuBar, QApplication,

                            QLabel, QVBoxLayout)

#### Python imports....

import sys


#### Class for sampleWindow....

class sampleWindow(QWidget):

    def __init__(self):

        super().__init__()


        #### Some window settings....

        self.setWindowTitle('Sample Program')

        self.setGeometry(400, 300, 1000, 500)


        ######## THE SAME PROBLEM BUT THIS TIME NOT IN A QMENUBAR ########

        #### Creating the widget and it's layout....

        parentLayout = QHBoxLayout()

        parentWidget = QWidget()


        #### Creating the elements....

        sampleLabelLeft = QLabel('left')

        sampleLabelCenter = QLabel('center')

        sampleLabelRight = QLabel('right')


        #### Setting alignment for the elements....

        sampleLabelLeft.setAlignment(Qt.AlignLeft)

        sampleLabelCenter.setAlignment(Qt.AlignCenter)

        sampleLabelRight.setAlignment(Qt.AlignRight)


        #### Adding the elements to the parentLayout....

        parentLayout.addWidget(sampleLabelLeft)

        parentLayout.addWidget(sampleLabelCenter)

        parentLayout.addWidget(sampleLabelRight)


        #### Setting parentLayout as layout for parentWidget....

        parentWidget.setLayout(parentLayout)


        #### Set styling for elements....

        self.setStyleSheet('QWidget{background:blue;} QLabel{background:red;}')



因此,在此之后,我将 QWidget 的背景颜色设置为浅灰色,并且忽略了拉伸。


有谁知道这个的解决方法?


宝慕林4294392
浏览 183回答 2
2回答

手掌心

默认情况下,布局具有 style-dependent spacing,因此针对您的情况的解决方案是将其设置为 0:# ...parentLayout = QHBoxLayout()parentLayout.setSpacing(0)# ...

至尊宝的传说

我发现设置背景小部件解决了这个问题:parentWidget = QWidget()label_background = QLabel(parentWidget)label_background.setFixedSize(1920, 1080)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python