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模拟用户登录验证
Sep 11 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
python解决字符串倒序输出的问题
Jun 25 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
浅谈python写入大量文件的问题
Nov 09 Python
python读取图片任意范围区域
Jan 23 Python
谈谈Python中的while循环语句
Mar 10 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
PHP新手上路(四)
2006/10/09 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
jQuery事件对象总结
2016/10/17 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
python实现mysql的读写分离及负载均衡
2018/02/04 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
如何将json数据转换为python数据
2020/09/04 Python
大一自我鉴定范文
2013/12/27 职场文书
仓库主管岗位职责
2014/03/02 职场文书
三字经教学反思
2014/04/26 职场文书
煤矿安全生产标语
2014/06/06 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python