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的web.py框架中url的设定方法
Jul 11 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
python 使用get_argument获取url query参数
Apr 28 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
python实现顺序表的简单代码
Sep 28 Python
python实现计数排序与桶排序实例代码
Mar 28 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
python动态文本进度条的实例代码
Jan 22 Python
快速一键生成Python爬虫请求头
Mar 04 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
Django使用echarts进行可视化展示的实践
Jun 10 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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的session cookie错误
2009/08/09 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php使用curl访问https示例分享
2014/01/17 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
超清晰的document对象详解
2007/02/27 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
Python脚本实时处理log文件的方法
2016/11/21 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Python之变量类型和if判断方式
2020/05/05 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
简单叙述一下MYSQL的优化
2016/05/09 面试题
个人社会实践自我鉴定
2014/03/24 职场文书
优秀毕业生的求职信
2014/07/21 职场文书