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之yield表达式学习
Sep 02 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python读取图片属性信息的实现方法
Sep 11 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
Python2与Python3的区别实例分析
Apr 11 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Django-rest-framework中过滤器的定制实例
Apr 01 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
一个程序下载的管理程序(二)
2006/10/09 PHP
php生成随机颜色的方法
2014/11/13 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
vue实现记事本功能
2019/06/26 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
c++工程师面试问题
2013/08/04 面试题
生产部厂长助理职位说明书
2014/03/03 职场文书
教师求职信范文
2014/05/24 职场文书
经济管理自荐书
2014/06/09 职场文书
入股合作协议书
2014/10/12 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL