我使用 PyQt5 和它的樣式系統(tǒng)來為我的應(yīng)用程序創(chuàng)建一個(gè)現(xiàn)代外觀的 GUI,但我似乎無法做到這一點(diǎn)。所以我有一個(gè)所有工作的服裝標(biāo)題欄。它有 3 個(gè)部分;一個(gè)菜單欄、一個(gè)標(biāo)簽和另一個(gè)菜單欄,用作關(guān)閉、最小化和最大化的標(biāo)題欄按鈕。我需要此標(biāo)題欄為淺灰色,但如下圖所示,元素之間存在空白?,F(xiàn)在是什么:應(yīng)該是什么:當(dāng)您運(yùn)行下面的示例時(shí),您可以看到標(biāo)簽之間有一些空白區(qū)域。即使標(biāo)簽在沒有樣式的框內(nèi),樣式也是在小部件上設(shè)置的。#### PyQt imports....from PyQt5.QtCore import Qtfrom 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 的背景顏色設(shè)置為淺灰色,并且忽略了拉伸。有誰知道這個(gè)的解決方法?
2 回答

手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
默認(rèn)情況下,布局具有 style-dependent spacing,因此針對(duì)您的情況的解決方案是將其設(shè)置為 0:
# ...
parentLayout = QHBoxLayout()
parentLayout.setSpacing(0)
# ...

至尊寶的傳說
TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
我發(fā)現(xiàn)設(shè)置背景小部件解決了這個(gè)問題:
parentWidget = QWidget()
label_background = QLabel(parentWidget)
label_background.setFixedSize(1920, 1080)