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赋值与拷贝
Apr 19 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
Python装饰器基础概念与用法详解
Dec 22 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
Python autoescape标签用法解析
Jan 17 Python
Python常用库大全及简要说明
Jan 17 Python
Python bytes string相互转换过程解析
Mar 05 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
详解MindSpore自定义模型损失函数
Jun 30 Python
Python实现仓库管理系统
May 30 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 echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
服务器web工具 php环境下
2010/12/29 PHP
分享PHP守护进程类
2015/12/30 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Using the TextRange Object
2006/10/14 Javascript
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
React服务端渲染(总结)
2017/07/01 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
木工主管岗位职责
2013/12/08 职场文书
教师自我反思材料
2014/02/14 职场文书
教研处工作方案
2014/05/26 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python