Pyqt5自适应布局实例


Posted in Python onDecember 13, 2019

在pyqt5中要做到自适应布局,必须应用Layout类

下面列出类似于 html 中 float 功能的布局方法:

实现原理: PyQt5中的布局中,stretch 属性类似于一个可自适应的空白布局。会尽可能将周围的组件布局向外挤压

from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout


# 垂直居中
def vcenter_layout(*widgets):
  vbox = QVBoxLayout()
  vbox.addStretch()
  for widget in widgets:
    vbox.addWidget(widget)
  vbox.addStretch()
  return vbox


# 水平居中
def hcenter_layout(*widgets):
  hbox = QHBoxLayout()
  hbox.addStretch()
  for widget in widgets:
    hbox.addWidget(widget)
  hbox.addStretch()
  return hbox


# 垂直水平居中
def center_layout(widget):
  hbox = QHBoxLayout()
  hbox.addStretch()
  hbox.addWidget(widget)
  hbox.addStretch()

  vbox = QVBoxLayout()
  vbox.addStretch()
  vbox.addLayout(hbox)
  vbox.addStretch()
  return vbox


# 居左
def left_layout(*widgets):
  hbox = QHBoxLayout()
  for widget in widgets:
    hbox.addWidget(widget)
  hbox.addStretch()
  return hbox


# 居右
def right_layout(*widgets):
  hbox = QHBoxLayout()
  hbox.addStretch()
  for widget in widgets:
    hbox.addWidget(widget)
  return hbox


# 向上靠齐
def top_layout(*widgets):
  vbox = QVBoxLayout()
  for widget in widgets:
    vbox.addWidget(widget)
  vbox.addStretch()
  return vbox


# 向下靠齐
def bottom_layout(*widgets):
  vbox = QVBoxLayout()
  vbox.addStretch()
  for widget in widgets:
    vbox.addWidget(widget)
  return vbox


# 正常垂直分布
def v_layout(*widgets):
  vbox = QVBoxLayout()
  for widget in widgets:
    vbox.addWidget(widget)
  return vbox


# 正常垂直分布
def h_layout(*widgets):
  vbox = QHBoxLayout()
  for widget in widgets:
    vbox.addWidget(widget)
  return vbox

基本上,大的布局通过上面的方法即可实现,细节可能还需要调整 margin 或者 spacing

以上这篇Pyqt5自适应布局实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
深入分析python中整型不会溢出问题
Jun 18 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
对Python3使运行暂停的方法详解
Feb 18 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
Django Rest framework认证组件详细用法
Jul 25 Python
python实现单链表的方法示例
Sep 03 Python
学python安装的软件总结
Oct 12 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
python 装饰器功能与用法案例详解
Mar 06 Python
Python如何实现线程间通信
Jul 30 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 #Python
PyQT5 emit 和 connect的用法详解
Dec 13 #Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 #Python
Python assert关键字原理及实例解析
Dec 13 #Python
使用pyqt 实现重复打开多个相同界面
Dec 13 #Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 #Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 #Python
You might like
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
德国电子商城:ComputerUniverse
2017/04/21 全球购物
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
为什么要用EJB
2014/04/17 面试题
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
新教师工作感言
2014/02/16 职场文书
小学元宵节活动总结
2015/02/06 职场文书
公司欠款证明
2015/06/24 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP