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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python中的类学习笔记
Sep 23 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
Python数据处理numpy.median的实例讲解
Apr 02 Python
python pygame实现方向键控制小球
May 17 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python语言异常处理测试过程解析
Jan 08 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
详解Python中list[::-1]的几种用法
Nov 16 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
简单谈谈Python面向对象的相关知识
Jun 28 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
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
Python实现Const详解
2015/01/27 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
python读取oracle函数返回值
2016/07/18 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python如何快速实现分布式任务
2017/07/06 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
ipython和python区别详解
2019/06/26 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
经济信息系毕业生自荐信范文
2014/03/15 职场文书
和谐社区口号
2014/06/19 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
python使用torch随机初始化参数
2022/03/22 Python