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爬虫之cookie使用方法
Feb 17 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
python存储16bit和32bit图像的实例
Dec 05 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
python如何代码集体右移
Jul 20 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
七个非常实用的Python工具包总结
Jun 15 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&mysql(二)
2006/10/09 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
篝火晚会主持词
2014/03/25 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
工厂标语大全
2014/10/06 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
英文版辞职信
2015/02/28 职场文书
博士论文答辩开场白
2015/06/01 职场文书
暑期工社会实践报告
2015/07/13 职场文书