10.3 QFormLayout表單佈局管理器
阿新 • • 發佈:2022-04-19
一、QFormLayout表單佈局管理器
1.基本概念
- QFormLayout表單佈局管理器類似於一個表格,操作方法也和我們之前學習過的游標插入和操作表格相似,比如插入行或列,對齊等功能
點選檢視程式碼
from PyQt5.Qt import * import sys class Window(QWidget) : def __init__(self) : super().__init__() self.setWindowTitle("佈局管理器-表單佈局QFormLayout - PyQt5中文網") self.resize(600, 500) self.func_list() def func_list(self) : self.func() def func(self) : name_label = QLabel('姓名:') age_label = QLabel('年齡:') tel_label = QLabel('號碼:') sex_label=QLabel('性別:') name_line = QLineEdit() age_line = QSpinBox() tel_line = QLineEdit() sub_btn = QPushButton('提交') # 性別的按鈕組合 man_btn = QRadioButton('男') woman_btn = QRadioButton('女') check_btn = QFormLayout() check_btn.addRow(man_btn, woman_btn) # 1.建立佈局管理器 form = QFormLayout() # 2.行操作 # 2.1.新增行 ## form.addWidget(name_label) #新增控制元件 ## form.addWidget(name_line) form.addRow(name_label, name_line) # 字串被自動解釋為標籤控制元件 form.addRow(age_label,age_line) form.addRow(sex_label, check_btn) form.addRow(tel_label, tel_line) form.addRow(sub_btn) # # # 2.2.插入行(和上面的新增行一樣,僅多一個位置整形數字) # form.insertRow(2, sub_btn) # int超出範圍後直接加在最後 # # 2.3.移除行 # form.removeRow(tel_label) # 刪除子控制元件,同時刪除整行 # form.takeRow(2) # 不刪除子控制元件,相當於隱藏了 ''' # # 2.4.修改行(一行中兩個角色的分別控制) # # QFormLayout.LabelRole # 標籤角色 # # QFormLayout.FieldRole # 輸入框角色 # # QFormLayout.SpanningRole # 整體行(包括輸入框和標籤) ''' # form.setWidget(0, QFormLayout.LabelRole, tel_label) # 如果0位置已經有控制元件,修改不會成功 # form.setWidget(0, QFormLayout.FieldRole, tel_line) # # form.setLayout(1, QFormLayout.FieldRole, check_btn) # # # 2.5.獲取行資訊 # print(form.rowCount()) # # print(form.getWidgetPosition(name_line)) # print(form.getLayoutPosition(check_btn)) # # # 2.6.標籤操作 # form.labelForField(name_label.setText('name' * 8)) #修改標籤的名字 # ''' # # 2.7.包裝策略 # # QFormLayout.DontWrapRows # 欄位一直在標籤旁邊 # # QFormLayout.WrapLongRows # 標籤文字過長,欄位自動換行 # # QFormLayout.WrapAllRows # 欄位一直位於標籤下方 ''' form.setRowWrapPolicy(QFormLayout.DontWrapRows) # # 2.8.對齊和間距 # form.setFormAlignment(Qt.AlignRight | Qt.AlignBottom) # 表單對齊 右對齊 下對齊 # form.setLabelAlignment(Qt.AlignRight) # 標籤對齊 # form.setHorizontalSpacing(30) # form.setVerticalSpacing(30) ''' # # 2.9.欄位增長策略 # # QFormLayout.FieldsStayAtSizeHint # 欄位寬度不變 # # QFormLayout.ExpandingFieldsGrow # 欄位寬度自適應變化 # # QFormLayout.AllNonFixedFieldsGrow # 用的不多 ''' form.setFieldGrowthPolicy(QFormLayout.FieldsStayAtSizeHint)#欄位寬度不變 # 3.為父控制元件添加布局管理器(新增該命令才能顯示) self.setLayout(form) if __name__ == '__main__' : app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())