【问题标题】:pyqt: How to let the QLabel occupy the whole windowpyqt:如何让QLabel占据整个窗口
【发布时间】:2019-07-29 16:56:55
【问题描述】:

我在一个窗口中放置了三个标签,然而,这三个标签只占据了窗口的一小部分。这是我的代码:

from PyQt5.QtWidgets import *
import sys

class ThreeDMPRWindow(QMainWindow):

    def __init__(self, image=None):
        super(ThreeDMPRWindow, self).__init__()

        self.resize(800, 600)

        widget = QWidget()
        self.setCentralWidget(widget)
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        widget.setLayout(layout)


        allLayout = QHBoxLayout()
        layout1 = QVBoxLayout()
        label1 = QLabel('label 1')
        label1.setStyleSheet("background: rgb(255,0,0)")
        layout1.addWidget(label1)

        layout2 = QVBoxLayout()
        label2 = QLabel('label 2')
        label2.setStyleSheet("background: rgb(255,0,0)")
        layout2.addWidget(label2)

        layout3 = QVBoxLayout()
        label3 = QLabel('label 3')
        label3.setStyleSheet("background: rgb(255,0,0)")
        layout3.addWidget(label3)

        qlayout = QGridLayout()
        qlayout.addLayout(layout1, 0, 0, 2, 1)
        qlayout.addLayout(layout2, 0, 1, 1, 1)
        qlayout.addLayout(layout3, 1, 1, 1, 1)
        allLayout.addLayout(qlayout)
        allLayout.addLayout(QVBoxLayout())

        layout.addLayout(allLayout)


app = QApplication(sys.argv)
window = ThreeDMPRWindow()
window.show()
app.exec_()

如果我们注释代码:allLayout.addLayout(QVBoxLayout()),三个标签会占据整个窗口。我不知道为什么这段代码会产生如此大的不同。但我无法删除代码 allLayout.addLayout(QVBoxLayout()),因为我需要其他一些小部件的新布局。

【问题讨论】:

  • 它看起来像一个错误,但我看到如果你将项目添加到 QVBoxLayout(),它是固定的,你是否将小部件添加到 QVBoxLayout()?
  • 是的,如果我在 QVBoxLayout 中添加标签,窗口就可以了。但是,我需要布局为空,因为我会在用户的一些运算符之后为布局添加一些小部件。
  • 我部分理解您,您最初是希望不显示正确的部分还是只是它是空的?
  • 我要右边的部分是空的。
  • 看我的回答...

标签: python pyqt pyqt5


【解决方案1】:

如果你想有一个可以添加其他小部件的空间,那么你必须使用 QWidget 而不是 QVBoxLayout,并在该 QWidget 中添加 QVBoxLayout:

# ...
allLayout.addLayout(qlayout)

empty_widget = QWidget()
empty_widget.setContentsMargins(0, 0, 0, 0)
lay = QVBoxLayout(empty_widget)

allLayout.addWidget(empty_widget)
layout.addLayout(allLayout)
# ...

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多