如前一篇笔记,我们还是只讨论两层嵌套布局的情况。

前面的布局有一个缺点:有三个内层布局,则需要三个空部件。那若有十个内层布局呢?显然会让人不舒服。

刚才在玩 Qt Designer 时,发现了一个更好的办法,不管有多少个内层布局,只需要一个空部件

一、过程分析:

1. 先准备一个全局部件,用于"承载"全局布局

        # 全局部件(注意参数 self),用于"承载"全局布局
wwg = QWidget(self)

2. 再定义全局布局

       wl = QVBoxLayout(wwg) # 全局布局(注意参数 wwg)

3. 定义三个局部布局

        vl = QVBoxLayout() # 三个局部布局
hl = QHBoxLayout()
gl = QGridLayout()

4. 当然,局部布局内肯定打算放置一些部件

        pass # 这里向局部布局内添加部件

5. 把三个局部布局加到全局布局

        wl.addLayout(vl) # 加到全局布局
wl.addLayout(gl)
wl.addLayout(hl)

二、全部代码

from PyQt5.QtWidgets import *

class MyWindow(QWidget):  

    def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5布局示例')
self.resize(400, 300) # 全局部件(注意参数 self),用于"承载"全局布局
wwg = QWidget(self) wl = QVBoxLayout(wwg) # 全局布局(注意参数 wwg) vl = QVBoxLayout() # 三个局部布局
hl = QHBoxLayout()
gl = QGridLayout() pass # 这里向局部布局内添加部件 wl.addLayout(vl) # 加到全局布局
wl.addLayout(gl)
wl.addLayout(hl) if __name__=="__main__":
import sys app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())

补充:

照上面的思路,更进一步,可以不要多余的空部件:

from PyQt5.QtWidgets import *

class MyWindow(QWidget):  

    def __init__(self):

        super().__init__()
self.setWindowTitle('PyQt5布局示例')
self.resize(400, 300) # 全局布局(注意参数 self)
wl = QVBoxLayout(self) # 局部布局
vl = QVBoxLayout()
hl = QHBoxLayout()
gl = QGridLayout() # 这里向局部布局内添加部件
hl.addWidget(QPushButton(''))
hl.addWidget(QPushButton(''))
vl.addWidget(QPushButton(''))
vl.addWidget(QPushButton(''))
vl.addWidget(QPushButton(''))
gl.addWidget(QPushButton(''),0,0)
gl.addWidget(QPushButton(''),0,1)
gl.addWidget(QPushButton(''),1,0)
gl.addWidget(QPushButton(''),1,1) # 加到全局布局
wl.addLayout(hl)
wl.addLayout(vl)
wl.addLayout(gl) if __name__=="__main__":
import sys app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())

再补充:

addLayout()方法原型:

  addLayout(QLayout, row, col, row_cross, col_cross, Qt.Alignment)

addWidget()方法原型:

  addWidget(QWidget, row, col, row_cross, col_cross, Qt.Alignment)

PyQt5 笔记(02):嵌套布局的更多相关文章

  1. PyQt5 笔记(01):嵌套布局

    PyQt5 有四种布局:水平(QHBoxLayout).竖直(QVBoxLayout).网格(QGridLayout).表单(QFormLayout)在窗体中单一的布局应该不难,但若是比较复杂的布局, ...

  2. amazeui学习笔记--css(布局相关1)--网格Grid

    amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式  <div class=&q ...

  3. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  4. 《30天自制操作系统》笔记(02)——导入C语言

    <30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...

  5. 《The Linux Command Line》 读书笔记02 关于命令的命令

    <The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...

  6. bootstrap学习总结-02 网格布局

    1  网格布局 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. <!DOCTYPE html> ...

  7. Bootstrap页面布局4 - 嵌套布局

    嵌套布局: 在一行中,有三列,每一列都有对应的BS栅格系统中的格子,以下例中因为 .row中的div对应的class分别是span4,span4,span4,所以其每一列对应的格子数是 4,4,4 现 ...

  8. Android学习笔记02

    1.线性布局LinearLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  9. WPF笔记(1.4 布局)——Hello,WPF!

    原文:WPF笔记(1.4 布局)--Hello,WPF! 这一节只是第2章的引子.布局要使用Panel控件,有四种Panel,如下:DockPanel,就是设置停靠位置布局模型.StackPanel, ...

随机推荐

  1. 在 Azure VM 上安装 LAMP Web 服务器

    本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 Apache Web 服务器.MySQL 和 PHP(LAMP 堆栈). 如果想要部署 NGINX Web 服务器,请参阅 LEMP ...

  2. Oracle 处理坏块

    本文主要介绍如何去处理在Oracle数据库中出现坏块的问题,对于坏块产生在不同的对象上,处理的方法会有所不同,本文将大致对这些方法做一些介绍.因为数据库运行时间长了,由于硬件设备的老化,出现坏块的几率 ...

  3. leetcode 刷题

    176:第二高的薪水 offset ) as secondhighestsalary; ---去掉第一个,再从第一个开始 177:第N高的薪水 ------相关子查询:子查询中引用了外层查询所引用表的 ...

  4. SQL Server FOR XML PATH 和 STUFF函数的用法

    FOR XML PATH ,其实它就是将查询结果集以XML形式展现,将多行的结果,展示在同一行. 下面我们来写一个例子: 假设我们有个工作流程表: CREATE TABLE [dbo].[Workfl ...

  5. ps命令之排序

    Linux中ps命令会自动选择一列进行排序,但有时这不是我们想要的. 方法一: ps+sort sort 选项与参数: -f  :忽略大小写的差异,例如 A 与 a 视为编码相同:-b  :忽略最前面 ...

  6. 铁乐学python_day09_作业

    练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for ...

  7. 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置(转)

    安装根据这个配置的,但是opencv3.0安装不成功,后来改安2.48就可以了. http://blog.csdn.net/poem_qianmo/article/details/19809337/ ...

  8. python第三方库——xlrd和xlwt操作Excel文件学习

    python第三方库——xlrd和xlwt操作Excel文件学习 1安装: C:\Users\Lenovo>pip install xlwtCollecting xlwt  Downloadin ...

  9. java StringBuilder案例

    实现输出字符串的长度,容量(容量不够则扩容),及内容 import java.util.Arrays; public class MyStringBuilderDemo { //任务:存储字符串并输出 ...

  10. Apache服务器下使用 ab 命令进行压力测试

    ab是Apache超文本传输协议(HTTP)的性能测试工具. 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 ...