Уменьшить интервал в PyQt5 - GridLayout - Между виджетами

Я новичок в 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)

1 ответ

Решение

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_())

Другие вопросы по тегам