本文由 沈庆阳 所有,转载请与作者取得联系!

前言

在前面几节的学习中,我们对PyQt的基本使用、Qt Designer与Python编码的工作流程有了基本的学习。同时也掌握了Qt Designer中的布局方式和使用Python代码来实现布局。
让我们在下面的时间里,通过Qt Designer来设计一个计算整数的计算器吧。

使用网格布局(Grid Layout)

首先分析我们的整数计算器需要的一些按钮:
数字键:0-9共10个。
操作符:+ - * / = CE共6个
当我们在Qt Designer的主窗口中创建上述16个按钮之后,按照4行4列的顺序进行摆放。

 
摆放按钮

并且修改按钮的属性中的objectName为相对于的名称。如数字0的objectName设置为Num_0,操作符+的objectName设置为OP_plus。对于按钮的显示名称的修改,在主窗口中双击相应按钮则可以快速修改。
由于计算器中的按钮是正方形的(我们通常会选择正方形),而且不想让这些按钮根据窗口的大小进行变化,通过全选16个按钮(在主窗口中使用鼠标左键拖出选择框,选中16个按钮)在右侧找到mininumSize和maximumSize属性。点击其左面的箭头符号展开选项,将其宽和高固定为60。这样就不会因为缩放窗口而造成按钮的大小变化了。

 
属性

在对所有按钮完成相应操作之后,我们选中16个按钮,点击右键,使用网格布局来实现布局。

 
通过网格布局实现的计算器键盘

使用Spacer增加空白间隔

我们在计算器上面新建一个Line Edit用来显示输入结果与计算结果。

 
新建一个Line Edit

通过在空白地方右键,对主窗口使用Vertical Lay Out。

 
垂直布局主窗口

此时,我们实现了一个计算器的布局。但显示框与下面的键盘举例太过近了。这时我们便需要使用左侧工具箱内的Spacer控件。

 
Spacer控件

Spacer顾名思义,分隔器。可以通过以占位的形式来将布局中的不同控件分开部分举例。
此时,我们拖动一个Vertical Spacer到Line Edit与下面的键盘之间。同样,Horizontal Spacer也可以用来水平地分离控件之间的距离。

 
Vertical Spacer分隔布局之中的控件


虽然Spacer在我们的Qt Designer编辑器中是以蓝色的类似弹簧的外观存在的,但是在真正的窗体中,Spacer是隐形的。

 
真正地程序中Spacer是看不见的

但这时的Spacer大小和Line Edit的大小都不是我想要的,而且也无法通过鼠标来拖动。如果想要改变这些,则需要进一步了解这些控件的一些属性。

sizePolicy 尺寸策略

在Qt Designer中,控件的尺寸是可以变化的。每个控件都拥有sizeHint和minisizeHint两个尺寸。其一,sizeHint即尺寸提示;其二,minisizeHint则是最小尺寸。尺寸提示也是控件的期望尺寸,最小尺寸即窗口可以被压缩到的最小的尺寸。sizePolicy与sizeHint和minisizeHint息息相关。
对于布局管理器中的布局无法满足我们的要求的时候,sizePolicy属性便派上了用场。

 
Line Edit的sizePolicy属性

sizePolicy可以实现控件的微调。sizePolicy中共有如下几种水平和垂直策略。

 
sizePolicy中的策略
策略 中文 含义
Fixed 固定 窗口控件具有sizeHint提示的尺寸且尺寸不变
Minimum 最小 窗口控件的sizeHint提示的尺寸即最小尺寸,窗口控件不能比这个值小,但是可以变大
Maximum 最大 窗口控件的sizeHint提示的尺寸即最大尺寸,窗口控件不能比这个值大,但是可以压缩到minisizeHint的尺寸
Preferred 期望 窗口控件的sizeHint提示的尺寸是期望的尺寸,可以压缩到minisizeHint尺寸,也可以比sizeHint尺寸更大
MinimumExpanding 最小扩展 窗口控件的sizeHint提示的尺寸是最小尺寸,不能缩得比这个尺寸小,但是这个控件期望可以比这个尺寸大
Expanding 扩展 窗口控件可以缩小到minisizeHint的尺寸,也可以比sizeHint的的尺寸大,但期望是更大
Ignored 忽略 无视窗口控件的sizeHint与minisizeHint,按照默认来设置

在sizePolicy的Horizontal Policy和Vertical Policy下面还有Horizontal Stretch和Vertical Stretch两个属性。

让我们找到Spacer,并修改其属性的Height为10。

 
Spacer的属性

并将其sizeType修改为Fixed固定。此时,观察左面的计算器的主界面显示栏Line Edit与下面的键盘之间的间距变小了。

 
修改Spacer大小后的界面

在这一节中,我们使用Qt Designer设计了一个计算器的界面,并且讲解了一些布局的方法。在下一节中,我们将会讲解如何添加一些高级的Qt组件来实现特定的功能。

觉得写的不错的朋友可以点一个 喜欢♥ ~

作者:养薛定谔的猫
链接:https://www.jianshu.com/p/61cb5ed4548f
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

PyQT5速成教程-4 Qt Designer实战[上]的更多相关文章

  1. PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程

    摘要:Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合.这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的 ...

  2. PyQt5(1)——Qt Designer初探

    相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件  可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...

  3. PyQT5速成教程-3 布局管理

    本文由 沈庆阳 所有,转载请与作者取得联系! 布局(Layout)管理 Qt Designer中,在工具箱中最上方可以看到有4种布局.分别是垂直布局.水平布局.栅格布局和表单布局.   四种布局 布局 ...

  4. PyQT5速成教程-1 简介与环境搭建

    本文由 沈庆阳 所有,转载请与作者取得联系! PyQt简介 一个良好的界面是人机交互中十分重要的一环. Python作为脚本语言,起初并未拥有GUI开发的部分.但随着其开放的扩展性,使得Python不 ...

  5. pyqt5.8.2没有qt Designer和assistant exe

    使用python3.6 pyqt5.8 eric6 创建完新的窗体后,弹出如下的错误: 解决方法: 1.安装pyqt5-tools 下载地址: https://pypi.python.org/pypi ...

  6. PyQt5速成教程

    博客地址 https://www.jianshu.com/nb/26159952

  7. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...

  8. 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子

      本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...

  9. pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面

    当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qt designer. 我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界 ...

随机推荐

  1. [No000013F]WPF学习之X名称空间详解

    X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...

  2. [No0000100]正则表达式匹配解析过程分析(正则表达式匹配原理)&regexbuddy使用&正则优化

    常见正则表达式引擎引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎有:DFA,NFA两种引擎. 引擎 区别点 DFA Deterministic finite autom ...

  3. Installing Precise (12.04.2) using netboot onto a Marvell ArmadaXP Development Board

      https://wiki.ubuntu.com/ARM/Server/Install https://wiki.ubuntu.com/ARM/Server/Install/ArmadaXP Arm ...

  4. GIS软件相关安装(持续更新)

    软件安装是GIS专业的必修课,总会忘记步骤,在此汇总 1.oracle ①无法登录 管理员登录 sqlplus sys/密码 as sysdba https://www.linuxidc.com/li ...

  5. 用SignalTap进行硬件仿真

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  6. [ovs][dpdk] ovs-dpdk, dpdk port 大量丢包

    gdb了ovs的代码,发现是 dpdk的imiss计数在不断的丢包. 看了ovs-openvswitchd的日志,重启时发现如下行: --21T11::.427Z||timeval|WARN|Unre ...

  7. [development][tcp/ip][ids] 一个简单有参考价值的库 libnids

    libhtp 中的例子, 可以通过libnids快速使用. 或者可以快速的写个sniffer. 支持三个功能 ip分片重组, tcp乱序重排, 端口扫描发现. 工程: https://github.c ...

  8. day2_Jmeter压测

    1.线程组各项设置的意思 2.压测结果查看各指标意思 备注:tps:每秒钟系统能够处理的交易或事务的数量.它是衡量系统处理能力的重要指标.tps越高说明服务器处理能力越好. 3.在一台电脑上做一个简单 ...

  9. LeetCode 937 Reorder Log Files 解题报告

    题目要求 You have an array of logs.  Each log is a space delimited string of words. For each log, the fi ...

  10. LeetCode 617 Merge Two Binary Trees 解题报告

    题目要求 Given two binary trees and imagine that when you put one of them to cover the other, some nodes ...