1

我是 PyQt5 的新手,我创建了一个如图所示的网格布局我想减少三个小部件之间的间隙,我尝试了边距、间距和行拉伸,但没有一个起作用,请查看超链接中的图像并帮助我 :

图片: 图片

def createlayout(self):
    self.label1=QLabel(self.label,self)
    self.label2=QLabel(self.label2,self)
    self.label3 = QLabel("try", self)
    self.textbox = QLineEdit(self)

    vbox=QGridLayout()


    vbox.addWidget(self.label1,0,0,1,1)

    vbox.addWidget(self.textbox,1,0,1,1)

    vbox.addWidget(self.label2,2,0,1,1)

    vbox.addWidget(self.label3, 3, 0, 1, 1)

    vbox.setContentsMargins(1,0,0,0)
    #vbox.setAlignment('AlignCenter')
    vbox.setRowStretch(0, 0)
    vbox.setRowStretch(1, 0)
    vbox.setRowStretch(2,0)
    vbox.setColumnStretch(1,0)
    #vbox.setRowStretch(2,1)
    vbox.setRowStretch(3,0)
    vbox.setSpacing(0)
4

1 回答 1

0

QGridLayout::setRowStretch(int row, int stretch)

将行行的拉伸因子设置为拉伸。第一行是数字 0。

拉伸因子相对于该网格中的其他行。具有较高拉伸因子的行占用更多可用空间。

默认拉伸因子为 0。如果拉伸因子为 0,并且此表中的其他行根本无法增长,则该行可能仍会增长。

import sys
from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.createlayout()

    def createlayout(self):
        self.label1 = QLabel("self.label")
        self.label2 = QLabel("self.label2")
        self.label3 = QLabel("try", )
        self.textbox = QLineEdit()

        vbox = QGridLayout(self)
        vbox.addWidget(self.label1, 0, 0)
        vbox.addWidget(self.textbox, 1, 0)
        vbox.addWidget(self.label2, 2, 0)
        vbox.addWidget(self.label3, 3, 0)
        
        vbox.setRowStretch(4, 1)                                 # +++

        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.resize(300, 200)
    w.show()
    sys.exit(app.exec_())

在此处输入图像描述

于 2020-06-25T16:00:05.557 回答