爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8934|回复: 8

[混合编程] PyQt之布局实战

[复制链接]

新浪微博达人勋

发表于 2020-4-16 14:16:37 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
跟其他语言或框架一样,PyQt有4种布局方式:垂直、水平、栅格、表单
360截图20200416140726724.jpg

把横式布局框拖入主窗,再往横式布局框里拖控件就是自动横排,
把纵式布局框拖入主窗,再往纵式布局框里拖控件就是自动纵排,
把栅格布局框拖入主窗,再往栅格布局框里拖控件就是自动M*N的排布,
3种效果如下:
布局.jpg

表单布局是基于常用功能来的,左边是标签,右边是输入控件:
表单.jpg

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-4-16 14:20:31 | 显示全部楼层
本帖最后由 15195775117 于 2020-4-16 14:48 编辑

布局工具有2个:布局管理器,容器
容器布局示例:
从containers中拖入一个Frame或Widget,再拖几个控件进去,选中Frame或Widget,右击可布局
容器的布局依旧是调用布局管理器来的

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-16 14:25:19 | 显示全部楼层
本帖最后由 15195775117 于 2020-4-16 14:26 编辑

布局方式也可在拖入控件后再设置:
选择多个控件,然后右击,在快捷键布局中也可实现横排或纵排
间隔时间跑.png



密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-16 14:32:55 | 显示全部楼层
我觉得,布局虽然有4种,但栅格布局可以取代其他3个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-16 15:51:43 | 显示全部楼层
Line是在控件之间加线,
Spacer是最大化空开组件间距,
LCD是液晶数字显示


999.png


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-17 09:35:50 | 显示全部楼层
Qt设计师中有3个类是窗口:

1、主窗QMainWindow
2、普通窗QWidget
3、对话框QDialog
其中对话框有3种形式,2个有“确认/取消”按钮,1个没有按钮


360截图20200417093137284.jpg 360截图20200417093432733.jpg




密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-17 10:15:24 | 显示全部楼层
本帖最后由 15195775117 于 2020-4-17 11:32 编辑

父子窗关系图:
父子窗.png
在我用IDL做GUI时,子窗有2种形式:一种是直接嵌在父窗中,一种是像对话框一样另开一个窗。
QMainWindow叫“顶层窗口”,虽然在布局上包纳了其他窗口,但它继承了QWidget的类,拥有其属性,这也是理所当然。
新建主窗后除了菜单栏、状态栏,还有个centralwidget,是控件占位符,我想它就代表着设计者可以布局控件的那部分间,毕竟主窗中不是哪里都能DIY(主窗不能设置布局,它有自己的布局):
360截图20200417101148890.jpg
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-17 14:01:37 | 显示全部楼层
本帖最后由 15195775117 于 2020-4-17 14:28 编辑

---------复制代码出现缩进错误的解决---------

把github上代码复制进spyder中,出现了缩进、tab、空格识别错误的情况,报错:
“inconsistent use of tabs and spaces in indentation”
在spyder和NotePad++打开脚本,肉眼看,不存在缩进问题,
但用记事本NotePad打开就发现缩进不对,
但用window自带记事本修改也不能解决问题
最后发现,粘贴进来的缩进部分是不受tab/shift+tab编辑的,
所以我把缩进都删了,重新用tab缩进,OK了!

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-17 15:27:54 | 显示全部楼层
PyQt的坐标以左上角为原点
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表