PyQt Qt Designer工具的布局管理详解


Posted in Python onAugust 07, 2019

前言

这节课很重要。。界面整洁美观与否就看布局了。。这里讲布局方法,至于设计的天赋与最终界面的美感那就看造化了。。

本文主要讲述Qt Designer工具实现界面控件布局管理,就是排列组合控件。包括水平布局、垂直布局、网格布局、表单布局。至于绝对布局太复杂。。短期内hold不住

布局管理打开方法

方法一:Qt Designer -> Form菜单栏

PyQt Qt Designer工具的布局管理详解

方法二:右键单击主窗口 -> Lay out

PyQt Qt Designer工具的布局管理详解

四种布局管理介绍

(1)水平布局 Lay Out Horizontally:被选中的控件在水平方向上从左到右排列。杂乱无章的四个控件水平布局后效果如下:

PyQt Qt Designer工具的布局管理详解

(2)垂直布局 Lay Out Vertically:被选中的控件在垂直方向上依次排列。杂乱无章的四个控件垂直排列后效果如下:

PyQt Qt Designer工具的布局管理详解

(3)表单布局Lay Out in a Form:控件以2列的形式布局在表单中。左列包含标签(label),右列包含输入控件。 用户名和密码相关的四个控件组合表单布局。

PyQt Qt Designer工具的布局管理详解

(4)网格布局 Lay Out in a Grid:网格布局是将窗口分隔成行和列的网格来进行排列。被选中组合的控件以网格的形式排列。参考如下。。好像也不美观。

PyQt Qt Designer工具的布局管理详解

嵌套布局

界面控件类型简单可以考虑采用上述四种布局方式进行单一布局。但是控件类型多样化的话就要考虑布局的嵌套了。就是分析控件的特点,采用不同布局方式组合控件。

如下主窗口中用户名+密码的标签+单行输入框控件组合使用表单布局,然后与登录+退出控件使用垂直布局,最后与显示文本框采用网格布局。具体效果如下

PyQt Qt Designer工具的布局管理详解

注意:组合控件使用的布局如果需要打破布局,可以通过选择组合的控件,然后单击菜单Form -> Break Layout方式进行打破布局。实际上使用撤销也可以。

PyQt Qt Designer工具的布局管理详解

绝对布局管理

某些时候采用布局管理工具完成的界面设置并不满足你的要求,可以考虑修改控件geometry属性相对坐标及长、框的方式进行对齐。geometry属性在PyQt中主要用来设置控件在窗口中的绝对坐标与控件自身的大小。如下图所示。对于包含控件类型及个数不多的界面可以考虑采用这种方式。

PyQt Qt Designer工具的布局管理详解

下面针对这几个控件的对齐简单描述一下。

PyQt Qt Designer工具的布局管理详解

第一行中"获取整数"按钮与"lineEdit"两个控件对齐:控件Y轴数值、Height长度值保持一致。控件间隔通过计算获取。这里两个控件间隔为150-80-50=30

PyQt Qt Designer工具的布局管理详解

第一列"获取整数"和"获取字符串"控件对齐:保持X轴数值、Width数值一致。列间间距为80-31-30=19。这样"获取列表选项"控件也以间距19保持即可。

是不是很简单?如果觉得布局管理出来效果不好,就动手尝试一下这种方法把。。

其他布局管理

1、采用绝对布局的方式进行控件布局。但是这种上手难度比较大,后面在实践过程中遇到有好的方法可以针对Qt界面布局管理后的效果进行优化的再补充介绍。

2、修改控件属性。通过修改控件的属性,比如最小尺寸、最大尺寸、长、宽、字体等等。比如我想针对小工具的需求我会经常使用固定最小尺寸、最大尺寸保持一致的方式,使主窗口及控件不受拉伸影响。

小结

本文针对Qt Designer布局管理中的水平布局、垂直布局、网格布局以及表单布局的最最基本的使用方法和布局效果进行了基本介绍。内容都很简单,看完也很容易自己动手实践一下。当然还有很多其他辅助的方式(比如添加水平线、垂直线等)可以帮助完成界面更合理的布局,这个需要后面再进行探索。。有新的理解或者内容后续再更新本文。期望自己可以布局一个还能过的去的界面。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程学习资料
Dec 19 Python
Python随机生成带特殊字符的密码
Mar 02 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
windows下python安装小白入门教程
Sep 18 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
Python中print和return的作用及区别解析
May 05 Python
python_mask_array的用法
Feb 18 Python
基于python实现删除指定文件类型
Jul 21 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 #Python
python利用7z批量解压rar的实现
Aug 07 #Python
django基础学习之send_mail功能
Aug 07 #Python
python实现本地批量ping多个IP的方法示例
Aug 07 #Python
Django model 中设置联合约束和联合索引的方法
Aug 06 #Python
对django 模型 unique together的示例讲解
Aug 06 #Python
python django model联合主键的例子
Aug 06 #Python
You might like
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技