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实现根据月份和日期得到星座的方法
Mar 27 Python
Python函数的周期性执行实现方法
Aug 13 Python
python正则实现计算器功能
Dec 14 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
python实现彩票系统
Jun 28 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
python常用运维脚本实例小结
Feb 14 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
python中pyqtgraph知识点总结
Jan 26 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 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手册及PHP编程标准
2006/12/17 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php 短链接算法收集与分析
2011/12/30 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
一段实时更新的时间代码
2006/07/07 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
不得不知的ES6小技巧
2018/07/28 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
JS随机密码生成算法
2019/09/23 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Django发送html邮件的方法
2015/05/26 Python
深入理解Python3中的http.client模块
2017/03/29 Python
python学习基础之循环import及import过程
2018/04/22 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
电大物流学生的自我评价
2013/10/25 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
大学生党课心得体会
2016/01/07 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android