Qt designer-窗口布局

正文之前首先说下环境的配置,这个比较闹心,前前后后弄了几天的时间,本来考虑使用eric6+qyqt5来做,结果发现汉化版居然不更新了,配置英文版又出现了python模块加载的问题,考虑是pyqt版本与python不相匹配。又考虑了anaconda+pyqt+eric的方法,还是出现了让人捉急的问题。好在天无绝人之路,发现pycharm也可以做pyqt5的IDE,终于配置成功
过程如下:
参考博文


1.布局管理

qtdesigner,提供了四种布局方式:分别是Vertical Layout(垂直布局),Horizontal Layout(水平布局),
Grid Layout(栅格布局),Form Layout(表单布局)四种布局形式。
Vertical Layout:控件按照从上到下的顺序纵向添加
Horizontal Layout:从左到右横向添加
Grid Layout:将窗口控件放在一个网格之中,然后将他们分为若干行和列,并把其中的每个窗口放在合适单元之中
Form Layout:控件以两列的形式布局在表单中,左列标签,右列输入控件

一般进行布局有两种形式,一是布局管理器进行布局,而是容器控件进行布局

布局管理器布局

简单的说就是先编辑控件,然后选中,使用layout子菜单,将选中的控件以指定的布局方式。
例如
在这里插入图片描述
这里使用的就是布局管理器,容易看出使用布局管理器,可以将相干的若干控件,划分为几个类。

容器布局

所谓容器控件,就是指能够容纳子控件的控件。使用容器控件,目的是将容器控件中的控件改为一类,以有别于其他控件。

2.布局相关基本概念以及应用

这里以push Button为例
在这里插入图片描述
通过属性管理器查看其属性
在这里插入图片描述
介绍几个属性:
geometry:用来设置控件在窗口中的绝对坐标(距离左上角的距离)与控件自身的大小
minimumSize:设置控件在布局管理器的最小属性
maximumSize:设置控件在布局管理器中的最大属性
SizeHint:尺寸提示,窗口控件的的期望尺寸
SizePolicy:如果窗口部件在布局管理器的布局不能满足要求,使用SizePolicy来实现微调
其下主要有水平策略,垂直策略,水平伸展,垂直伸展几种属性
默认如下:
在这里插入图片描述
水平策略与垂直策略相关解释如下、
Fixed:窗口控件具有sizeHint所提示的尺寸且尺寸不再改变
miniimum:sizeHint提示的尺寸就是其最小尺寸
maximum:sizeHint提示的尺寸就是其最大尺寸
Preferred:sizeHint提示的尺寸就是其期望尺寸
Expanding:可以比sizeHint提示的尺寸大,也可以比sizeHint提示的尺寸小,但期望更大
MinimumExpanding :可以比sizeHint提示的尺寸大,也可以缩小到Minimum提示的尺寸,但期望更大
Ignored:无视提示尺寸,按照默认设置
水平伸展与垂直伸展
就是设置控件相对伸展比

3.Qt Designer布局的顺序

(1)将控件拖入窗口中并放置在大致位置,一般不需调整窗口大小
(2)对于要用代码引用的控件,指定一个名字,需要微调的控件,可以设置其属性
(3)重复步骤12
(4)如有需要,比如控件之间需保持一定距离,可以用Vertical Spacer, Horizontal Spacer,Vertical Line,Horizontal line 隔开
(5)选择需要布局的窗口控件,使用布局管理器进行布局或切分窗口
(6)重复5,直至窗口控件布局完成
(7)单击窗口,使用布局管理器进行布局
(8)为窗口标签设置伙伴关系。
(9)若按键顺序有问题,设置窗口的tab键顺序
(10)在适当的窗口为内置的信号和槽建立信号与槽连接
(11)预览窗口(CTRL+r)检查是否正常
(12)设置窗口的对象名,窗口的标题进行保存
(13)pyuic生成py代码
(14)编写业务逻辑文件
解释
(7)窗口布局可以使窗口充满,同时对于不合理的布局,可使用breaklayout 打破布局
(8)伙伴:在这个模式下,可以把QLabel跟其它控件连起来。QLabel可以设置快捷键,当按下快捷键后,窗口焦点就移动到与它连接扩控件上
例如在这里插入图片描述
以3为例,首先将3重命名为&3然后使用Edit 栏中的编辑伙伴(Buddy)鼠标左键按住&3不动,右拉到需要关联的对象
需要注意的是,设置伙伴关系只对英文名字的Display Widgets有效
(9)设置tab键顺序(当按下tab键时,光标跳动的顺序),Edit->Edit Tab Order
上图ui文件的一个简单应用(命名很混乱,仅作测试用,无实际含义)

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow,QApplication
from shizhan1 import Ui_Form #导入转化后的窗口模块
class shizhanDemo(QMainWindow,Ui_Form):
    def __init__(self, parent=None):# [parent含义](https://www.cnblogs.com/dcb3688/p/4255467.html)
        super(shizhanDemo,self).__init__(parent)
        self.setupUi(self)

    @pyqtSlot()#生成对话框
    def on_pushButton_clicked(self):#当点击pushButton
        print("1_min:",self.doubleSpinBox.text())
        print("1_max:", self.doubleSpinBox_4.text())
        print("2_min:", self.doubleSpinBox_2.text())
        print("2_max:", self.doubleSpinBox_5.text())
        print("3_min:", self.doubleSpinBox_3.text())
        print("3_max:", self.doubleSpinBox_6.text())

if __name__== "__main__":#f __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
    import sys
    app=QApplication(sys.argv)
    ui=shizhanDemo()
    ui.show()
    sys.exit(app.exec_())

其他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值