我是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)
答案 0 :(得分: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_())