10.2 QBoxLayout盒子佈局管理器
阿新 • • 發佈:2022-04-16
一、QBoxLayout盒子佈局管理器
1.基本概念
- QBoxLayout盒子佈局管理器主要分為兩種,一種是橫向佈局(QHBoxLayout),一種是縱向佈局(QVBoxLayout),兩種子類使用發放一直,可以通過子類選擇也可以通過QBoxLayout直接設定選擇哪種佈局方式。
2.程式碼
點選檢視程式碼
from PyQt5.Qt import * import sys class Window(QWidget) : def __init__(self) : super().__init__() self.setWindowTitle("佈局管理-盒子佈局QBoxLayout - PyQt5中文網") self.resize(600, 500) self.func_list() def func_list(self) : self.func() def func(self) : # QBoxLayout有兩個子類QVBoxLayout和QHBoxLayout label1 = QLabel('標籤1', self) label1.setStyleSheet('background-color:green') label2 = QLabel('標籤2', self) label2.setStyleSheet('background-color:red') label3 = QLabel('標籤3', self) label3.setStyleSheet('background-color:green') # 1.建立佈局管理器 # QBoxLayout.RightToLeft # QBoxLayout.LeftToRight # QBoxLayout.TopToBottom # QBoxLayout.BottomToTop # layout = QBoxLayout(QBoxLayout.RightToLeft) layout = QHBoxLayout() #2-6 單獨測試 7-9 再進行測試 # # 2.新增控制元件 # layout.addWidget(label1) # 1為1/6 # layout.addWidget(label2) # 3為3/6 # layout.addWidget(label3) # 2為2/6 # # 3.添加布局管理器到父控制元件 # self.setLayout(layout) # # # 4.修改方向 # layout.setDirection(QBoxLayout.TopToBottom) # # # 5.新增元素 # label4 = QLabel('標籤4', self) # label4.setStyleSheet('background-color:green') # # layout.addWidget(label4) # layout.insertWidget(2, label4) # 索引值為2的地方插入label4 # # # 6.移除控制元件 # layout.removeWidget(label4) # 移除的控制元件只是從佈局管理器中踢出,但是會在父控制元件正常展示,可以直接呼叫hide()方法->三種:刪除、隱藏、放入其他佈局管理器中 # label4.hide() # 7.新增空白 # 直接在控制元件之間新增,就是在控制元件之間新增一個空白控制元件 layout.addWidget(label1) # layout.addSpacing(50) # 可以自由調節某個元素之間的間距 layout.addWidget(label2) layout.addWidget(label3) # 8.彈簧:當所有控制元件沒有設定伸縮因子的時候就會使用預設值,如果其中一個控制元件伸縮因子改為1,代表這個控制元件佔所有伸縮量的百分之百 # layout.addWidget(label1, 1) # 1為1/8 # layout.addStretch(2) # 增加2個寬度的伸縮因子 # layout.addWidget(label2, 3) # 3為3/8 # # layout.insertStretch(2) # layout.addWidget(label3, 2) # 2為2/8 # 9.佈局巢狀 label4 = QLabel('標籤4') label4.setStyleSheet('background-color:green') label5 = QLabel('標籤5') label5.setStyleSheet('background-color:red') label6 = QLabel('標籤6') label6.setStyleSheet('background-color:green') layout2 = QVBoxLayout() #垂直方向 layout2.addWidget(label4) layout2.addWidget(label5) layout2.addWidget(label6) layout.addWidget(label1) layout.addWidget(label2) layout.addLayout(layout2) layout.addWidget(label3) self.setLayout(layout) if __name__ == '__main__' : app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())