PyQt5 笔记(02):嵌套布局
如前一篇笔记,我们还是只讨论两层嵌套布局的情况。
前面的布局有一个缺点:有三个内层布局,则需要三个空部件。那若有十个内层布局呢?显然会让人不舒服。
刚才在玩 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):嵌套布局的更多相关文章
- PyQt5 笔记(01):嵌套布局
PyQt5 有四种布局:水平(QHBoxLayout).竖直(QVBoxLayout).网格(QGridLayout).表单(QFormLayout)在窗体中单一的布局应该不难,但若是比较复杂的布局, ...
- amazeui学习笔记--css(布局相关1)--网格Grid
amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式 <div class=&q ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- 《30天自制操作系统》笔记(02)——导入C语言
<30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...
- 《The Linux Command Line》 读书笔记02 关于命令的命令
<The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...
- bootstrap学习总结-02 网格布局
1 网格布局 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. <!DOCTYPE html> ...
- Bootstrap页面布局4 - 嵌套布局
嵌套布局: 在一行中,有三列,每一列都有对应的BS栅格系统中的格子,以下例中因为 .row中的div对应的class分别是span4,span4,span4,所以其每一列对应的格子数是 4,4,4 现 ...
- Android学习笔记02
1.线性布局LinearLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
- WPF笔记(1.4 布局)——Hello,WPF!
原文:WPF笔记(1.4 布局)--Hello,WPF! 这一节只是第2章的引子.布局要使用Panel控件,有四种Panel,如下:DockPanel,就是设置停靠位置布局模型.StackPanel, ...
随机推荐
- Oracle EBS 新增OAFM个数
在 $INST_TOP/ora/10.1.3/opmn/conf/opmn.xml中找到<process-type id="oafm" module-id="OC4 ...
- Shell: extract more from listener.log (分析oracle监听日志)
最近遇到了两起数据库连接数不足的问题, 通常都会预留一些会话增加的情况, 但在一些特殊情况下如连接风暴(logon storm), 如果在监听中没有做rate限流,对数据库来说巨大的冲击可能会导致数据 ...
- 动态展开tableView的cell[2]
动态展开tableView的cell[2] http://code4app.com/ios/%E5%8A%A8%E6%80%81%E6%B7%BB%E5%8A%A0cell/53845f8a933bf ...
- [UI] 精美UI界面欣赏[4]
精美UI界面欣赏[4]
- LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)
参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...
- 数据挖掘比赛优秀经验贴-收集ing
(1)TOP5%Kaggler:如何在 Kaggle 首战中进入前 10% | 干货https://www.leiphone.com/news/201703/kCMQyffeP0qUgD9a.html ...
- C# 词法分析器(一)词法分析介绍
系列导航 (一)词法分析介绍 (二)输入缓冲和代码定位 (三)正则表达式 (四)构造 NFA (五)转换 DFA (六)构造词法分析器 (七)总结 虽然文章的标题是词法分析,但首先还是要从编译原理说开 ...
- 使用C#操作Oracle Spatial的SDO_GEOMETRY对像(读取和写入)
首先,这个需要使用ODAC,也就是Oracle.DataAccess.dll,新出的托管Oracle.ManagedDataAccess.dll不支持Object Type,无法使用 ODAC下载地址 ...
- 洛谷 P2764 最小路径覆盖问题【最大流+拆点+路径输出】
题目链接:https://www.luogu.org/problemnew/show/P2764 题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V ...
- python中string格式化
python中可以对string, int, float等数据类型进行格式化操作.下面举例来说明一些常用操作. 先贴出 python 对 String Formatting Operations 讲解 ...