QVBoxLayout 垂直布局,加入该布局的控件在垂直方向上按加入先后顺序排列。
QHBoxLayout 水平布局,加入该布局的控件在水平方向上按加入先后顺序排列。
例子1
import sys from PySide2.QtWidgets import QApplication, QVBoxLayout, QHBoxLayout, QWidget, QPushButton class LayoutWnd(QWidget): def __init__(self, parent=None): super(LayoutWnd, self).__init__(parent) self.setFixedSize(600, 400) v_layout = QVBoxLayout() # v1_layout = QVBoxLayout() # h_layout = QHBoxLayout() # v1_layout.addWidget(QPushButton('按钮a', self)) # v1_layout.addWidget(QPushButton('按钮b', self)) v1_layout.addWidget(QPushButton('按钮c', self)) h_layout.addWidget(QPushButton('按钮d', self)) # h_layout.addWidget(QPushButton('按钮e', self)) h_layout.addWidget(QPushButton('按钮f', self)) v_layout.addLayout(v1_layout) # v_layout.addLayout(h_layout) # v_layout.addWidget(QPushButton("按钮3", self)) # self.setLayout(v_layout) #
例子2(addStretch)
class LayoutWnd(QWidget): def __init__(self, parent=None): super(LayoutWnd, self).__init__(parent) self.setFixedSize(600, 400) v_layout = QVBoxLayout() v1_layout = QVBoxLayout() h_layout = QHBoxLayout() v1_layout.addStretch(1) # v1_layout.addWidget(QPushButton('按钮a', self)) v1_layout.addWidget(QPushButton('按钮b', self)) v1_layout.addWidget(QPushButton('按钮c', self)) h_layout.addWidget(QPushButton('按钮d', self)) h_layout.addWidget(QPushButton('按钮e', self)) h_layout.addStretch(1) # h_layout.addWidget(QPushButton('按钮f', self)) v_layout.addLayout(v1_layout) v_layout.addLayout(h_layout) v_layout.addWidget(QPushButton("按钮3", self)) self.setLayout(v_layout)
例子3(addSpacing, setSpacing)
class LayoutWnd(QWidget): def __init__(self, parent=None): super(LayoutWnd, self).__init__(parent) self.setFixedSize(600, 400) v_layout = QVBoxLayout() v1_layout = QVBoxLayout() h_layout = QHBoxLayout() v1_layout.addWidget(QPushButton('按钮a', self)) v1_layout.addWidget(QPushButton('按钮b', self)) v1_layout.addSpacing(40) # v1_layout.addWidget(QPushButton('按钮c', self)) h_layout.addWidget(QPushButton('按钮d', self)) h_layout.addWidget(QPushButton('按钮e', self)) h_layout.addWidget(QPushButton('按钮f', self)) h_layout.setSpacing(40) # v_layout.addLayout(v1_layout) v_layout.addLayout(h_layout) v_layout.addWidget(QPushButton("按钮3", self)) self.setLayout(v_layout)
例子4(setContentsMargins)
class LayoutWnd(QWidget): def __init__(self, parent=None): super(LayoutWnd, self).__init__(parent) self.setFixedSize(600, 400) v_layout = QVBoxLayout() v1_layout = QVBoxLayout() h_layout = QHBoxLayout() v1_layout.addWidget(QPushButton('按钮a', self)) v1_layout.addWidget(QPushButton('按钮b', self)) v1_layout.setContentsMargins(5, 20, 40, 80) # left, top, right, bottom v1_layout.addWidget(QPushButton('按钮c', self)) h_layout.addWidget(QPushButton('按钮d', self)) h_layout.addWidget(QPushButton('按钮e', self)) h_layout.addWidget(QPushButton('按钮f', self)) v_layout.addLayout(v1_layout) v_layout.addLayout(h_layout) v_layout.addWidget(QPushButton("按钮3", self)) self.setLayout(v_layout)
例子5(alignment)
import sys from PySide2.QtWidgets import QApplication, QVBoxLayout, QHBoxLayout, QWidget, QPushButton from PySide2.QtCore import Qt class LayoutWnd(QWidget): def __init__(self, parent=None): super(LayoutWnd, self).__init__(parent) self.setFixedSize(600, 400) v_layout = QVBoxLayout() v1_layout = QVBoxLayout() h_layout = QHBoxLayout() v1_layout.addWidget(QPushButton('按钮a', self)) v1_layout.addWidget(QPushButton('按钮b', self)) v1_layout.addWidget(QPushButton('按钮c', self)) h_layout.addWidget(QPushButton('按钮d', self)) h_layout.addWidget(QPushButton('按钮e', self)) h_layout.addWidget(QPushButton('按钮f', self), alignment=Qt.AlignRight) # v_layout.addLayout(v1_layout) v_layout.addLayout(h_layout) v_layout.setAlignment(h_layout, Qt.AlignBottom) # v_layout.addWidget(QPushButton("按钮3", self)) self.setLayout(v_layout)
上面罗列了常用的一些函数,比如 addStretch, addSpacing, setSpacing, setContentsMargins,可参照对应的界面发生的变化。