10.1 QLayout佈局管理器基類
阿新 • • 發佈:2022-04-16
一、QLayout佈局管理器基類
1.基本概念
- QLayout是佈局管理器基類,屬於抽象類。
- 如果想使用他,就必須子類化,或者直接使用其子類來呼叫其中的方法和屬性,本節課就利用其子類盒子佈局管理器來講解。
- 基本步驟
# 1.建立佈局管理器物件
# 2.設定物件引數
# 2.1邊距調節
# 2.2設定佈局的方向
# 3.新增需要佈局的控制元件到佈局管理器
# 4.添加布局管理器到父控制元件
2.程式碼
點選檢視程式碼
from PyQt5.Qt import * import sys class Window(QWidget) : def __init__(self) : super().__init__() self.setWindowTitle("佈局管理-初識QLayout - PyQt5中文網") self.resize(600, 500) self.func_list() def func_list(self) : self.func() def func(self) : # 初識佈局管理器 # QLayout是抽象類,直接使用子類建立佈局管理器 # 因為父控制元件直接和佈局管理器產生聯絡,佈局管理器再和子控制元件建立聯絡,所以這裡子控制元件可以省略self 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') # # 傳統方式佈局 # label_width = self.width() # label_height = self.height() / 3 # label1.resize(label_width, label_height) # label2.resize(label_width, label_height) # label3.resize(label_width, label_height) # # label1.move(0, 0) # label2.move(0, label_height) # label3.move(0, label_height * 2) # 1.建立佈局管理器物件 # v_layout = QVBoxLayout() # QVBoxLayout 垂直佈局 v_layout = QHBoxLayout() #QHBoxLayout 水平佈局 # 2.設定物件引數 # 2.1邊距調節 v_layout.setContentsMargins(10, 30, 50, 70) # 外邊距 、左上右下 v_layout.setSpacing(30) # 內邊距 # 2.2設定佈局的方向 # Qt.RightToLeft # Qt.LeftToRight # Qt.LayoutDirectionAuto # 自動佈局 self.setLayoutDirection(Qt.RightToLeft) # 3.新增需要佈局的控制元件到佈局管理器 v_layout.addWidget(label1) v_layout.addWidget(label2) v_layout.addWidget(label3) # 4.添加布局管理器到父控制元件 self.setLayout(v_layout) # setLayout直接繼承QWidget,不是控制元件,只是一種定位策略 print(self.children()) # 這時候佈局管理器和子控制元件擁有相同的父物件self,所以佈局管理器不是控制元件,只是一種定位策略 # label2.hide() if __name__ == '__main__' : app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())