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 相关文章推荐
Windows下为Python安装Matplotlib模块
Nov 06 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
基于python生成器封装的协程类
Mar 20 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
在pycharm中实现删除bookmark
Feb 14 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 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
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
Add a Table to a Word Document
2007/06/15 Javascript
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
vue实现购物车案例
2020/05/30 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
python 字典中文key处理,读取,比较方法
2018/07/06 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
什么是servlet链?
2014/07/13 面试题
法人授权委托书样本
2014/09/19 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
商务考察邀请函模板
2015/02/02 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书