Pyqt5 小部件使用 GridLayout 转移到中心
Pyqt5 Widgets get shifted to center using GridLayout
所以我基本上是在为我的应用程序创建一个网格布局。但是,在我更改文本框的宽度后,整个小部件都会转移到我不想要的中心。请帮助我:
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)
QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
This version adds the given widget to the cell grid, spanning multiple rows/columns. The cell will start at fromRow, fromColumn spanning rowSpan rows and columnSpan columns.
The widget will have the given alignment.
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_())
所以我基本上是在为我的应用程序创建一个网格布局。但是,在我更改文本框的宽度后,整个小部件都会转移到我不想要的中心。请帮助我:
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)
QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
This version adds the given widget to the cell grid, spanning multiple rows/columns. The cell will start at fromRow, fromColumn spanning rowSpan rows and columnSpan columns.
The widget will have the given alignment.
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_())