import sys from PyQt5.Qt import * class Window(QWidget): def __init__(self): super().__init__() self.setup_ui() def setup_ui(self): self.setWindowTitle("Qt桌面应用程序") self.button_1_flag = 1 self.resize(300, 300) self.label_name = QLabel("用户名") self.field_name = QLineEdit() self.label_agender = QLabel("性别") self.field_agender_male = QRadioButton("男") self.field_agender_female = QRadioButton("女") self.layout_agender = QHBoxLayout() self.layout_agender.addWidget(self.field_agender_male) self.layout_agender.addWidget(self.field_agender_female) self.label_age = QLabel("年龄") self.field_age = QSpinBox() self.form_layout = QFormLayout() self.form_layout.setFormAlignment(Qt.AlignVCenter) self.form_layout.setLabelAlignment(Qt.AlignRight) self.form_layout.setVerticalSpacing(20) self.form_layout.setHorizontalSpacing(20) # self.form_layout.setFieldGrowthPolicy(QFormLayout.FieldsStayAtSizeHint) # self.form_layout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) self.form_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) self.form_layout.addRow(self.label_name, self.field_name) self.form_layout.setWidget(1, QFormLayout.LabelRole, self.label_agender) self.form_layout.setLayout(1, QFormLayout.FieldRole, self.layout_agender) self.form_layout.insertRow(2, self.label_age, self.field_age) self.setLayout(self.form_layout) self.label_test_1 = QLabel("测试1") self.field_test_1 = QLineEdit() self.form_layout.addRow(self.label_test_1, self.field_test_1) self.form_layout.addRow("测试2", QLineEdit()) print(self.form_layout.rowCount()) print(self.form_layout.getItemPosition(1)) print(self.form_layout.getItemPosition(3)) print(self.form_layout.itemAt(3).itemAt(0).widget().text()) print(self.form_layout.labelForField(self.form_layout.itemAt(9).widget()).text()) self.label_test_1.destroyed.connect(lambda: print("self.label_test_1.destroyed")) self.field_test_1.destroyed.connect(lambda: print("self.field_test_1.destroyed")) # self.form_layout.removeRow(3) # take_row_result=self.form_layout.takeRow(3) take_row_result = self.form_layout.takeRow(self.label_test_1) print(take_row_result.labelItem.widget().text(), take_row_result.fieldItem.widget()) print(self.label_test_1) take_row_result.labelItem.widget().hide() take_row_result.fieldItem.widget().hide() self.button_1 = QPushButton() self.button_1.setText("按钮") def button_clicked(): if self.form_layout.rowWrapPolicy() == QFormLayout.DontWrapRows: self.form_layout.setRowWrapPolicy(QFormLayout.WrapLongRows) elif self.form_layout.rowWrapPolicy() == QFormLayout.WrapLongRows: self.form_layout.setRowWrapPolicy(QFormLayout.WrapAllRows) elif self.form_layout.rowWrapPolicy() == QFormLayout.WrapAllRows: self.form_layout.setRowWrapPolicy(QFormLayout.DontWrapRows) self.button_1.clicked.connect(button_clicked) self.form_layout.addRow(self.button_1) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())