python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例


Posted in Python onMarch 06, 2020

PyQt5布局控件QVBoxLayout简介

采用QVBoxLayout类,按照从上到下的顺序添加控件

本节内容较少,演示两个实例,便于明白QVBoxLayout(垂直布局)的使用

QVBoxLayout的正常使用实例

import sys
from PyQt5.QtWidgets import QApplication ,QWidget ,QVBoxLayout , QPushButton
class Winform(QWidget):
  def __init__(self,parent=None):
    super(Winform,self).__init__(parent)
    self.setWindowTitle("垂直布局管理例子") 
    self.resize(330, 150) 
    # 垂直布局按照从上到下的顺序进行添加按钮部件。
    vlayout = QVBoxLayout()
    vlayout.addWidget( QPushButton(str(1)))
    vlayout.addWidget( QPushButton(str(2)))
    vlayout.addWidget( QPushButton(str(3)))
    vlayout.addWidget( QPushButton(str(4)))
    vlayout.addWidget( QPushButton(str(5)))
    self.setLayout(vlayout)  
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    form = Winform()
    form.show()
    sys.exit(app.exec_())

运行效果示意图

python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例

addStretch()函数的使用

在布局中要用到addStretch()函数,设置stretch伸缩量后,按比例分配剩余的空间

函数 描述
QBoxLayout.addStretch(int stretch=0) addStretch()函数在布局管理器中添加一个可伸缩的控件(QSpaceItem),0为最小值,并且将stretch作为伸缩量添加到布局末尾,stretch参数表示均分的比例,默认为0

addStretch在QVBoxLayout的使用实例

一个布局管理器中,有三个按钮,要求界面不随着父控件的伸缩而改变

from PyQt5.QtWidgets import QApplication ,QWidget, QVBoxLayout , QHBoxLayout ,QPushButton
import sys 
class WindowDemo(QWidget): 
  def __init__(self ): 
    super().__init__()
    btn1 = QPushButton(self)
    btn2 = QPushButton(self)
    btn3 = QPushButton(self)   
    btn1.setText('button 1')
    btn2.setText('button 2')
    btn3.setText('button 3')
    hbox = QHBoxLayout()
    # 设置伸缩量为1
    hbox.addStretch(1)
    hbox.addWidget( btn1 )
    # 设置伸缩量为1
    hbox.addStretch(1)
    hbox.addWidget( btn2 )
    # 设置伸缩量为1
    hbox.addStretch(1)
    hbox.addWidget( btn3 )
    # 设置伸缩量为1
    hbox.addStretch(1 )    
    self.setLayout(hbox)
    self.setWindowTitle("addStretch 例子")
if __name__ == "__main__": 
  app = QApplication(sys.argv) 
  win = WindowDemo() 
  win.show() 
  sys.exit(app.exec_())

运行程序,初始效果图如下

python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例

拉伸后效果图如下

python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例

从上面的代码可以看出,四个addStretch()函数用于在按钮间随着伸缩量,伸缩量的比例为1:1:1:1,意思是将按钮以外的空白地方等分为4分,并按照所设置的顺序放入按钮的布局管理器中,这样在每一个控件之间都添加了伸缩量,所有控件之间的间距都会相同

思考:如果我们只添加一个addStretch()在第一个控件之前或者最后一个控件之后会怎样呢,那么来试试看

探究:addStretch()函数放在第一个空间之前

import sys
from PyQt5.QtWidgets import QApplication ,QWidget ,QHBoxLayout , QPushButton
class Winform(QWidget):
  def __init__(self,parent=None):
    super(Winform,self).__init__(parent)
    self.setWindowTitle("水平布局管理例子") 
    self.resize(800, 50)
    # 水平布局按照从左到右的顺序进行添加按钮部件。
    hlayout = QHBoxLayout() 
    # 添加伸缩   
    hlayout.addStretch(0)
    hlayout.addWidget( QPushButton(str(1)) )
    hlayout.addWidget( QPushButton(str(2)) )
    hlayout.addWidget( QPushButton(str(3)))
    hlayout.addWidget( QPushButton(str(4)) )    
    hlayout.addWidget( QPushButton(str(5)) )  
    # 添加伸缩   
    #hlayout.addStretch(1)
    self.setLayout(hlayout)  
if __name__ == "__main__": 
  app = QApplication(sys.argv) 
  form = Winform()
  form.show()
  sys.exit(app.exec_())

运行效果图

python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例

结果显示,这样所有的控件都会向右显示,

那么类似的放在最后一个控件之后,都会向左显示,

本文主要介绍了PyQt5布局控件QVBoxLayout详细使用方法与实例,更多关于PyQt5布局控件的使用知识请查看下面的相关链接

Python 相关文章推荐
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
opencv与numpy的图像基本操作
Mar 08 Python
详解如何设置Python环境变量?
May 13 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
python实现复制大量文件功能
Aug 31 Python
Django3.0 异步通信初体验(小结)
Dec 04 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
分享一个python的aes加密代码
Dec 22 Python
Python+Tkinter制作专属图形化界面
Apr 01 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 #Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 #Python
Python yield的用法实例分析
Mar 06 #Python
用Python生成HTML表格的方法示例
Mar 06 #Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 #Python
Python修改列表值问题解决方案
Mar 06 #Python
You might like
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
银行实习生自我鉴定范文
2013/09/19 职场文书
住宅质量保证书
2014/04/29 职场文书
交通志愿者活动总结
2014/06/27 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
接收函
2019/04/22 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL