1

所以我基本上是为我的应用程序创建一个网格布局。但是,在我更改文本框的宽度后,整个小部件都会转移到我不想要的中心。请帮我 :

在此处输入图像描述

    def createlayout(self):
    self.label1=QLabel(self.label,self)
    self.label2=QLabel(self.label2,self)
    self.textbox2 = QLineEdit(self)
    self.textbox = QLineEdit(self)
    txbx=[self.textbox2,self.textbox]

    [tx.setFixedWidth(90) for tx in txbx]

    #self.textbox.setFixedWidth(120)
    vbox=QGridLayout()
    #vbox=QVBoxLayout()
    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.textbox2, 3, 0, 1, 1)

    #vbox.setContentsMargins(0,0,0,0)
    #vbox.setAlignment('AlignCenter')
    vbox.setRowStretch(4,1)
4

1 回答 1

1

QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment 对齐 = Qt::Alignment())

此版本将给定的小部件添加到单元格网格中,跨越多行/列。单元格将从 fromRow 开始,fromColumn 跨越 rowSpan 行和 columnSpan 列。

小部件将具有给定的对齐方式

import sys
from PyQt5.Qt import *

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

    def createlayout(self):
        self.label1 = QLabel('Pressure Drop')
        self.label2 = QLabel('Flow Rate')
        self.textbox2 = QLineEdit()
        self.textbox2.setFixedWidth(90)
        self.textbox = QLineEdit()
        self.textbox.setFixedWidth(90)

        vbox = QGridLayout(self)
        vbox.addWidget(self.label1, 0, 0, 1, 1, alignment=Qt.AlignLeft)
        vbox.addWidget(self.textbox, 1, 0, 1, 1, alignment=Qt.AlignLeft)
        vbox.addWidget(self.label2, 2, 0, 1, 1, alignment=Qt.AlignLeft)
        vbox.addWidget(self.textbox2, 3, 0, 1, 1, alignment=Qt.AlignLeft)
        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-25T19:51:04.123 回答