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中绑定与未绑定的类方法用法分析
Apr 29 Python
Python Queue模块详细介绍及实例
Dec 27 Python
python3中bytes和string之间的互相转换
Feb 09 Python
浅析使用Python操作文件
Jul 31 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Django框架视图介绍与使用详解
Jul 18 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 Python
Python之matplotlib绘制折线图
Apr 13 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
CI框架装载器Loader.php源码分析
2014/11/04 PHP
php类自动加载器实现方法
2015/07/28 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
js获取html文件的思路及示例
2013/09/17 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
php结合js实现多条件组合查询
2019/05/28 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python登陆asp网站页面的实现代码
2015/01/14 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python返回昨天日期的方法
2015/05/13 Python
python将list转为matrix的方法
2018/12/12 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python调用Windows命令打印文件
2020/02/07 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
历史专业毕业生的自我鉴定
2013/11/15 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
个人银行贷款担保书
2014/04/01 职场文书
补充协议书
2015/01/28 职场文书
经销商会议开幕词
2016/03/04 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server