我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
QBoxLayout(QBoxLayout.Direction, parent: QWidget = None)
# parent一般都不写
# 参数:QBoxLayout.Direction方向
# QBoxLayout.LeftToRight # 从左到右水平布局
# QBoxLayout.RightToLeft # 从右到左水平布局
# QBoxLayout.TopToBottom # 从上到下垂直布局
# QBoxLayout.BottomToTop # 从下到上垂直布局
setSpacing(int) # 设置元素与元素之间的间距
spacing0 -> int # 获取元素与元素之间的距离
setContentsMargins(int leftt,int top , int right, int bottom) # 设置子控件与父控件边框之间的距离左、上、右、下
contentsMargins() ->QMargins # 获取子控件与父控件边框之间的距离
# 在大多数平台上,边距在所有方向上都是11像素
addWidget(QWidget w) # 添加子控件
replaceWidget(self, QWidget, QWidget, options: Union[Qt.FindChildOptions, Qt.FindChildOption] = Qt.FindChildrenRecursively) -> QLayoutItem
# 被替换的控件,不再被此布局管理,需要将其隐藏、删除或者重新添加到新的布局中
# 通过QWidget.hide() 隐藏子控件,调用show()方法会让子控件再次参与布局
# 如果需要删除(释放)该控件,可以通过让其不再被任何控件引用,即将其父控件取消(父对象设置为空)QWidget.setParent(None)
addLayout(QLayout layout) # 添加子布局管理器
setEnabled(bool) # 设置布局管理器是否生效
isEnabled()->bool # 判断布局管理器是否生效
setDirection(self, QBoxLayout.Direction) # 设置布局方向
direction()->QBoxLayout.Direction # 获取布局方向
# 添加控件的同时设置伸缩因子(尺寸占比)
addWidget(self, QWidget, stretch: int = 0, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment())
# 插入控件到指定索引位置的同时设置伸缩因子(尺寸占比)
insertWidget(self, int, QWidget, stretch: int = 0, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment())
# 添加子布局的同时设置伸缩因子(尺寸占比)
addLayout(self, QLayout, stretch: int = 0)
# 插入子布局到指定索引位置的同时设置伸缩因子(尺寸占比)
insertLayout(self, int, QLayout, stretch: int = 0)
# 父类的方法
replaceWidget(self, QWidget, QWidget, options: Union[Qt.FindChildOptions, Qt.FindChildOption] = Qt.FindChildrenRecursively) -> QLayoutItem
# 被替换的控件,不再被此布局管理,需要将其隐藏、删除或者重新添加到新的布局中
# 通过QWidget.hide() 隐藏子控件,调用show()方法会让子控件再次参与布局
# 如果需要删除(释放)该控件,可以通过让其不再被任何控件引用,即将其父控件取消(父对象设置为空)QWidget.setParent(None)
removeWidget(self, QWidget) # 移除子控件
# 被移除的控件,不再被此布局管理,需要将其隐藏、删除或者重新添加到新的布局中
# 如果需要删除(释放)该控件,可以通过让其不再被任何控件引用,即将其父控件取消(父对象设置为空)QWidget.setParent(None)
QWidget.hide() # 隐藏子控件
# 通过QWidget.hide() 隐藏子控件,调用show()方法会让子控件再次参与布局
addSpacing(self, int) # 在最后位置添加指定宽度的空白
insertSpacing(self, int, int) # 在指定索引位置插入指定宽度的空白
addStretch(self, stretch: int = 0) # 在最后位置添加空白伸缩因子的同时设置尺寸占比
insertStretch(self, int, stretch: int = 0) # 在指定索引位置插入空白伸缩因子的同时设置尺寸占比
stretch(self, int) -> int # 获取指定索引位置的空白伸缩因子,返回其尺寸占比
setStretch(self, int, int) # 给指定索引位置的元素设置伸缩因子的同时设置占比
setStretchFactor(self, QWidget, int) -> bool # 给指定子控件设置伸缩因子的同时设置占比,返回是否成功
setStretchFactor(self, QLayout, int) -> bool # 给指定子布局设置伸缩因子的同时设置占比,返回是否成功
# 当子控件/子布局不由当前布局管理器管理则会设置失败,返回False
setContentsMargins(self, int, int, int, int) # 设置外边距
setSpacing(self, int) # 设置内边距,元素与元素之间的距离
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QBoxLayout-功能作用')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建子控件
labe1 = QLabel('标签1')
labe1.setStyleSheet('background-color: cyan;')
labe2 = QLabel('标签2')
labe2.setStyleSheet('background-color: yellow;')
labe3 = QLabel('标签3')
labe3.setStyleSheet('background-color: green;')
labe4 = QLabel('标签4')
labe4.setStyleSheet('background-color: red;')
labe5 = QLabel('标签5')
labe5.setStyleSheet('background-color: blue;')
labe6 = QLabel('标签6')
labe6.setStyleSheet('background-color: orange;')
labe7 = QLabel('标签7')
labe7.setStyleSheet('background-color: yellow;')
labe8 = QLabel('标签8')
labe8.setStyleSheet('background-color: orange;')
# 1. 创建布局管理器
layout = QBoxLayout(QBoxLayout.LeftToRight) # 从左到右,水平布局
# layout = QBoxLayout(QBoxLayout.RightToLeft) # 从右到左,水平布局
# layout = QBoxLayout(QBoxLayout.TopToBottom) # 从上到下,垂直布局
# layout = QBoxLayout(QBoxLayout.BottomToTop) # 从下到上,垂直布局
# 2. 将布局管理器设置给父控件
self.setLayout(layout)
# 3. 将子控件添加到布局管理器中
# layout.addWidget(labe1)
# layout.addWidget(labe2)
# layout.addWidget(labe3)
pass # 父控件的功能作用
# pass # 设置元素之间的距离
# layout.setSpacing(20)
#
# pass # 设置外边距
# layout.setContentsMargins(10, 20, 30, 40)
#
# pass # 添加子控件
# layout.addWidget(labe4)
#
# pass # 替换子控件
# layout.replaceWidget(labe4, labe5)
# # labe4.hide()
# labe4.setParent(None)
#
# pass # 添加子布局
# # 创建布局管理器
# v_layout = QBoxLayout(QBoxLayout.TopToBottom)
# # 添加子控件到布局管理器中
# v_layout.addWidget(labe4)
# v_layout.addWidget(labe6)
# # 主布局管理器添加子布局管理器
# layout.addLayout(v_layout)
#
# pass # 布局管理器可用性
# # layout.setEnabled(False)
# pass # 修改方向
layout.setDirection(QBoxLayout.TopToBottom)
#
# pass # 添加子控件
# # # 添加子控件的同时设置伸缩因子
# # layout.addWidget(labe4, 1)
# # 在指定索引位置插入子控件的同时设置伸缩因子
# layout.insertWidget(1, labe4, 1)
#
# pass # 添加子布局
# h_layout = QBoxLayout(QBoxLayout.LeftToRight)
# h_layout.addWidget(labe5)
# h_layout.addWidget(labe6)
#
# # # 添加子布局的同时设置伸缩因子
# # layout.addLayout(h_layout, 2)
# # 在指定索引位置插入子布局的同时设置伸缩因子
# layout.insertLayout(0, h_layout, 2)
#
# pass # 替换控件
# layout.replaceWidget(labe4, labe7)
# labe4.setParent(None)
#
# pass # 移除控件
# layout.removeWidget(labe2)
# # labe2.setParent(None) # 测试这个好像不设置也没有问题
# print(labe2.parent())
#
# labe7.hide() # 隐藏控件
# labe7.show() # 显示控件
pass # 添加空白
# 在最后位置添加指定宽度的空白
# layout.addSpacing(50)
# 在指定索引位置插入指定宽度的空白
# layout.insertSpacing(1, 100)
pass # 伸缩因子
# 添加子控件的同时设置伸缩因子
# layout.addWidget(labe1, 1)
# layout.addWidget(labe2, 1)
# layout.addWidget(labe3, 1)
# layout.addWidget(labe4, 1)
# # 添加空白伸缩因子
# # layout.addStretch(1)
# # 在指定索引位置插入空白伸缩因子
# layout.insertStretch(3, 2)
pass # 设置伸缩因子
layout.addWidget(labe1)
layout.addWidget(labe2)
layout.addWidget(labe3)
layout.addWidget(labe4)
h_layout = QBoxLayout(QBoxLayout.LeftToRight)
h_layout.addWidget(labe5)
h_layout.addWidget(labe6)
layout.addLayout(h_layout)
# 给指定索引位置的元素设置伸缩因子
layout.setStretch(0, 1)
layout.setStretch(1, 1)
layout.setStretch(2, 1)
layout.setStretch(3, 1)
layout.setStretch(4, 1)
# 给指定子控件设置伸缩因子
layout.setStretchFactor(labe3, 5)
# 给指定子布局设置伸缩因子
layout.setStretchFactor(h_layout, 4)
pass # 设置边距
# 继承自同父类中的方法
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
QHBoxLayout()
QHBoxLayout(QWidget)
QVBoxLayout()
QVBoxLayout(QWidget)