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中zip()函数用法实例教程
Jul 31 Python
python自动化测试实例解析
Sep 28 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
PHP实现发送和接收JSON请求
Jun 07 Python
Python登录注册验证功能实现
Jun 18 Python
Sanic框架配置操作分析
Jul 17 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
Python基础之函数的定义与使用示例
Mar 23 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
Django实现微信小程序支付的示例代码
Sep 03 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
使用python实现学生信息管理系统
Feb 25 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
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
Js组件的一些写法
2010/09/10 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
Python复制目录结构脚本代码分享
2015/03/06 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
编辑硕士自荐信范文
2013/11/27 职场文书
开业主持词
2014/03/21 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
辅导员评语
2014/05/04 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python