如何删除 QBoxLayout(QBoxLayout.TopToBottom) 中 2 个小部件之间的间距

How To Remove the Spacing Between 2 widgets in a QBoxLayout(QBoxLayout.TopToBottom)

提问人:user19926715 提问时间:11/16/2023 最后编辑:user19926715 更新时间:11/16/2023 访问量:37

问:

我正在使用 PyQt5 作为参考,其中我有一个带有参数的参数,我正在尝试删除小部件之间的间距,如下所示:QBoxLayoutQBoxLayout.TopToBottomenter image description here

我尝试使用甚至尝试制作一个自定义类,我在 init 函数中定义了它们,但没有修复。 如果你们需要其他任何东西,我可以重新格式化/添加这个问题。作为记录,标签下的那些小部件是 UPDATE: 下面是图像的代码:QBoxLayout.setSpacing(0)QBoxLayout.setContentMargins(0,0,0,0)QBoxLayoutQProgressbar

class LearnLeftPanelQBox(QBoxLayout):
        def __init__(self):
            super().__init__(QBoxLayout.TopToBottom)
            self.setContentsMargins(0,0,0,0)
            self.setSpacing(0)

self.learnLeftPanelTitle=QLabel("Correct:")
            self.learnLeftPanelTopLayout.addWidget(self.learnLeftPanelTitle)
            self.learnLeftPanelTitle.setStyleSheet("font: 20pt Comic Sans MS; color: white;")
            self.learnLeftPanelTopLayout.addWidget(self.learnLeftPanelTitle)
            self.learnLeftPanelProgressCorrect=QProgressBar()
            self.learnLeftPanelProgressCorrect.setStyleSheet("font: 20pt Comic Sans MS; color: green;")
            self.learnLeftPanelTopLayout.addWidget(self.learnLeftPanelProgressCorrect)
            self.learnLeftPanelTitle=QLabel("Incorrect:")
            self.learnLeftPanelTopLayout.addWidget(self.learnLeftPanelTitle)
            self.learnLeftPanelTitle.setStyleSheet("font: 20pt Comic Sans MS; color: white;")
            self.learnLeftPanelProgressIncorrect=QProgressBar()
            self.learnLeftPanelProgressIncorrect.setStyleSheet("font: 20pt Comic Sans MS; color: red;")
            self.learnLeftPanelTopLayout.addWidget(self.learnLeftPanelProgressIncorrect)
            self.learnLeftPanelLayout.addWidget(self.learnLeftPanelTop)
            self.learnLeftPanelSettingsButton=QPushButton("Settings")
            self.learnLeftPanelSettingsButton.setStyleSheet("QPushButton{font: 20pt Comic Sans MS; color: white;border-style: outset; border-width: 2px; border-radius: 10px;border-color:white;} QPushButton::hover{background-color: white; color: black;}")
            self.learnLeftPanelSettingsButton.clicked.connect(self._showLearnSettings)
            self.learnLeftPanelLayout.addWidget(self.learnLeftPanelSettingsButton)

这里的选项卡格式搞砸了,但堆栈溢出不允许我修复它。这些都在一个单独的函数中找到,其余的与此无关。

我最好的可重复答案:

# Purpose: Stack layout example
from PyQt5.QtWidgets import QWidget, QLabel,QProgressBar,QApplication,QBoxLayout
class main(QWidget):
    def __init__(self) -> None:
        super().__init__()
        self.showFullScreen()
        layout=QBoxLayout(QBoxLayout.TopToBottom)
        layout.setContentsMargins(0,0,0,0)
        firstLabel=QLabel("First Label")
        firstBar=QProgressBar()
        secondLabel=QLabel("Second Label")
        secondBar=QProgressBar()
        layout.addWidget(firstLabel)
        layout.addWidget(firstBar)
        layout.addWidget(secondLabel)
        layout.addWidget(secondBar)
        self.setLayout(layout)
if __name__=="__main__":
    import sys
    app = QApplication(sys.argv)
    win = main()
    win.show()
    sys.exit(app.exec_())
python pyqt5

评论

0赞 Karine Bauch 11/16/2023
你能添加与你发布的图片相对应的代码吗?
0赞 user19926715 11/16/2023
忽略选项卡问题,但在这里
0赞 musicamante 11/16/2023
@user19926715 请试着更好地解释你的问题,因为现在还不清楚:为什么你认为第一个是正确的,第二个是不正确的?另外,该图像是完整小部件/窗口的屏幕截图吗?如果没有,请添加该图像的完整图像。最后,请提供一个有效的最小可重现示例,因为您的代码片段引用了我们一无所知的对象。
0赞 user19926715 11/16/2023
对不起,他们注定要在一起。我需要删除 QLabel 和 QProgressbar 之间的空格,尽管在布局上我删除了所有边距和间距,这就是我问的原因。图片是全屏窗口的一部分,这是唯一相关的部分。
0赞 user19926715 11/16/2023
这是我最好的例子。如果窗口较小,则布局会将它们并排放置,但在全屏模式下,它会显示我所说的间距

答: 暂无答案