pyqt5 formlayout动态增加和删除
时间: 2023-08-31 08:02:30 浏览: 129
动态添加删除表单元素
4星 · 用户满意度95%
PyQt5的FormLayout是一种用于创建表单式布局的工具,可以方便地动态增加和删除行。下面是一个简单的示例代码,演示了如何使用FormLayout动态增加和删除行。
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFormLayout, QLineEdit, QPushButton
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.layout = QVBoxLayout()
self.form_layout = QFormLayout()
self.addButton = QPushButton("添加行")
self.delButton = QPushButton("删除行")
self.addButton.clicked.connect(self.add_row)
self.delButton.clicked.connect(self.del_row)
self.layout.addLayout(self.form_layout)
self.layout.addWidget(self.addButton)
self.layout.addWidget(self.delButton)
self.setLayout(self.layout)
def add_row(self):
label = QLineEdit()
value = QLineEdit()
self.form_layout.addRow(label, value)
def del_row(self):
row_count = self.form_layout.rowCount()
if row_count > 0:
row_item = self.form_layout.itemAt(row_count-1)
if row_item:
row_item.widget().deleteLater()
self.form_layout.removeItem(row_item)
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个QWidget,并使用QVBoxLayout作为其主要布局。然后,我们创建了一个QFormLayout,并将其添加到主要布局中。然后,我们创建了两个QLineEdit控件,并使用`addRow()`方法将它们添加到QFormLayout中。
在`add_row()`方法中,我们动态创建了两个新的QLineEdit控件,并使用`addRow()`方法将它们添加到QFormLayout中。在`del_row()`方法中,我们从QFormLayout中删除了最后一行。
这样,每次点击"添加行"按钮时,都会动态增加一行文本框;而每次点击"删除行"按钮时,会删除最后一行文本框。
阅读全文