如何在 PyQT 中定位动态创建的小部件
How to position the dynamically created widgets in PyQT
我正在使用 PyQGIS 根据图层中字段名称的数量动态创建小部件。小部件已成功创建,但未正确定位。有没有办法使用 Python 将 lineedit 框定位到中间?下面是我动态创建小部件的代码。
selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
for i,field in enumerate(fieldnames):
self.labels = QLabel()
self.linedit = QLineEdit()
self.labels.setText(field)
self.linedit.setFixedWidth(100)
self.dlg.verticalLayout.addWidget(self.labels)
self.dlg.verticalLayout.addWidget(self.linedit)
我希望文本框像这样放置
如果你想获得相同顺序的表格你必须使用QFormLayout
。
selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
flay = QFormLayout()
for field in fieldnames:
le = QLineEdit()
le.setFixedWidth(100)
flay.addRow(field, le)
self.dlg.verticalLayout.addLayout(flay)
我正在使用 PyQGIS 根据图层中字段名称的数量动态创建小部件。小部件已成功创建,但未正确定位。有没有办法使用 Python 将 lineedit 框定位到中间?下面是我动态创建小部件的代码。
selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
for i,field in enumerate(fieldnames):
self.labels = QLabel()
self.linedit = QLineEdit()
self.labels.setText(field)
self.linedit.setFixedWidth(100)
self.dlg.verticalLayout.addWidget(self.labels)
self.dlg.verticalLayout.addWidget(self.linedit)
我希望文本框像这样放置
如果你想获得相同顺序的表格你必须使用QFormLayout
。
selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
flay = QFormLayout()
for field in fieldnames:
le = QLineEdit()
le.setFixedWidth(100)
flay.addRow(field, le)
self.dlg.verticalLayout.addLayout(flay)