目标

  • 利用Qt Designer设计窗口界面
  • 使用PyUIC把Qt Designer生成的UI文件转换为py文件
  • 使用转换生成的py文件

创建项目

  • 启动启动pycharm并创建项目

这一环节在这里就不过多讲述了,方法与前面所说的《使用pycharm创建我的python项目》一致,如果有不清楚的同学可以参考这篇文章。

  • 安装包:pyqt5

前面安装的pyqt5-tools包含的只是Qt Designer等工具,若要正常使用这些工具生成窗体文件,pyqt5这个包是需要安装到当前项目的。

安装包:pyqt5

当然,如果当前项目使用的是全局环境,而且你已经在全局环境中安装好了pyqt5,那么在项目环境中就能够直接找到这个包,不用再重复安装了。

制作窗口UI

  • 启动Qt Designer

Qt Designer如果已经正确连接到pycharm,那就可以直接通过pycharm菜单中的Tools->External Tools->QT设计师来启动。External Tools中的“QT设计师”选项名字是在连接时自行设置的,如果还未了解如何把Qt Designer连接到pycharm中,可以参考我的另一篇文章《PYQT5学习(01):Qt Designer安装和设置》

启动Qt Designer

  • 选择创建的窗口类型

启动Qt Designer后,会看到下面的界面。这里是要求我们选择创建窗口的类型,建议选择“Widget”。不同的类型本质都是一样,只是创建窗口的参数和窗口中包含的控件会有所区别。Widget选项创建的窗口是最简模式,只包含了一个空白的容器,我们需要自行往里边添加不同的控件。

选择完成后,单击“Create”按钮创建窗口。

  • 添加控件

选择创建窗口类型后,可以看到下图的界面。这时在Qt Designer界面上看到一个窗口模样的预览窗口,我们可以使用鼠标向里面添加控件,修改其中各部分的属性,添加QSS样式等。

下面尝试把控件箱中的"Label"控件添加到窗口上。在控件箱的“Display Widgets”类别在找到“Label"控件,使用鼠标的拖动操作,把一个Label拖放到窗口上。到此为止,我们成功为窗口添加了一个控件。其它控件的添加方法也与此相似,大家也可以尝试把更多的控件添加到窗口上。

  • 修改控件属性

刚添加的控件会使用系统的默认设置,我们可以对它的属性进行调整,让它以期望的效果进行显示。例如刚才添加的”Label“,可以修改它的字体、大小、颜色等各种属性。具体操作可以参见下图:

每类控件所具有的属性非常多,我们在刚接触时不要想着把所有的属性都记住。而应该先掌握常用的属性作用和修改方法,熟练后会接触到更多的编程需求。当新的需求用到新的属性时,再结合需要去了解。控件的属性最好是参考官方文档,那里更新速度最快,资料最完整。

  • 保存UI文件

具体的保存操作这里就不详细说了,大家自己脑补吧~

把UI文件转换成.py文件

Qt Designer中创建的UI文件是不能被PYQT5这个包所识别,我们需要调用PYQT5-Tools中的PyUIC程序进行转换,把UI文件中的每一项设置翻译成对就的Python指令,调用PYQT5来进行窗口的实际操作。

可以发现,PYQT的窗口编程,实际是需要我们编写代码调用PYQT5包中的方法,进行窗口、控件创建和属性修改等。但手动编码的效率较低,对于重复性事务需要反反复复地输入代码,工作效率低下。为此,PYQT5-Tools这组工具就是专门解决这一问题而诞生。它可以使用可视化的方式让用户设定窗口,然后把用户的设定批量地转换成对就的指令,大大简化了开发的过程。

如上图所示,由于前面我们已经把PyUIC与Pycharm连接好,所以UI文件的转换操作非常简单。只要在需转换的UI文件上单击鼠标右键,从弹出的快捷菜单中找到“Extenal Tools”中的UI转PY选项。(这个选项名字与连接进的设置有关,不一定叫这个名字。)具体设置方法参见另一篇文章《PYQT5学习(01):Qt Designer安装和设置》。这样就可以得到转换好的py文件了。

把窗口添加到程序中

通过Qt Designer设计生成的窗口py文件,实际是封装成一个类。而我们要在程序中展示这个窗口,首先需要把这个类导入,并把它实例化。由于在Qt Designer中没有修改窗口的类名,所以这时类名应该还是默认的:Ui_Form。

在项目中新建一个新的py文件,作为项目的入口主程序。然后把Qt Designer在生成的窗口类Ui_Form导入,参照下面的程序对类进行实例化。运行程序,可看到我们刚才设计的窗口。

import sysfrom PyQt5 import QtWidgetsfrom test_win import Ui_Formapp=QtWidgets.QApplication(sys.argv)widget=QtWidgets.QWidget()ui=Ui_Form()ui.setupUi(widget)widget.show()sys.exit(app.exec_())

大家对上面的代码可能不太理解,这个问题暂时不去理会。现在需要先了解UI的设计和转换,并且应用到程序。至于具体的原理,后面再来逐一细说。

本篇文章中的源码打包在以下地址,有需要的请自行下载:

链接:https://pan.baidu.com/s/1bOMz4cTIU9la8rbrtwGJag 提取码:quos

最后,需要说明一下。本人并非技术大牛,也不是什么高手。写这些pyqt5的内容是为了充当学习的笔记,方便日后忘记时查阅。所以内容上一定会有错漏的地方,希望大家帮忙指出。

distiller的另一个实例正忙于启动_PYQT5学习(02):利用Qt Designer制作第一个窗口程序相关推荐

  1. distiller的另一个实例正忙于启动_PLC编程实例丨一步一步教你设计PLC控制电机转停反控制系统~...

    根据下图的三相交流电动机正反转控制的主电路,设计一个PLC控制电机正停反的控制系统.控制要求如下: (1)正常情况下,按启动按钮SB1,电机正转,按下反转启动按钮SB2,电机反转. (2)电机启动后, ...

  2. qtdesigner设计表格_实例9 利用Qt Designer设计一个对话框

    在Qt编程中,程序员通常都是使用手动编写Python源代码来进行Qt程序开发,但有些程序员也喜欢使用可视化的方法进行对话框设计,因此,Qt为习惯利用可视化方式进行窗口程序设计的程序员提供了Design ...

  3. 转:让程序只运行一个实例的四种方法

    先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...

  4. 限制程序只打开一个实例(转载)

    当我们在做一些管理平台类的程序(比如Windows的任务管理器)时,往往需要限制程序只能打开一个实例.解决这个问题的大致思路很简单,无非是在程序打开的时候判断一下是否有与自己相同的进程开着,如果有,则 ...

  5. 只运行一个实例的方法

    在VC++ 中编程中,只运行一个实例的方法主要有两类: 1 遍历当前的所有窗口,查找相同的实例.为了便于查找,一般要事先设一个查找标志. 2 利用系统提供的互斥对象或信标,直接让系统抑制重复的实例. ...

  6. 利用51单片机制作一个秒表的详细过程

    利用51单片机制作一个秒表的详细过程 前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大 ...

  7. C#程序只允许运行一个实例的解决方案

    最近在做winform的程序中,需要只能打开一个程序,如果已经存在,则激活该程序的窗口,并显示在最前端.在网上google了一哈,找到了很多的解决方案.这里我整理了3种方案,并经过了测试,现和朋友们分 ...

  8. oracle最大实例数,【ORA-16196】一个实例在其生命周期里最多只能装载和打开一个数据库...

    如果使用"alter database open;"命令打开一个曾经被"alter database close;"命令关闭的数据库时,您将会收到如下的报错信息 ...

  9. vue-router路由、mixin混入、vue-resource、axios、计算属性watch、moment.js、vuex、vue-cli、数据双向绑定、搭建vue环境、vue实例、配置启动项

    路由vue-router介绍: // 1.前端路由核心:锚点值的改变,根据不同的锚点值,渲染指定dom位置的不同数据.// 2.vue中,模板数据不是通过ajax请求的,而是调用函数获取到模板内容// ...

最新文章

  1. 哈佛计算机系硕士几年,2020年哈佛大学计算机信息硕士申请条件
  2. 安装apr和tomcat-native优化tomcat
  3. 开发一个自己的 CSS 框架(二)
  4. OpenCV2:应用篇 QT+OpenCV实现图片编辑器
  5. k8s部署nacos集群:3个pod、连接外部mysql读写分离集群
  6. 解决微服务在docker上部署后无法连接数据库的问题
  7. Pacman主题下给Hexo增加简历类型
  8. Cowrie蜜罐的部署(ubt亲测)
  9. Java基础---标志符、变量和数据类型
  10. 数据库笔记05:创建与管理数据库
  11. python支付系统_GitHub - zhuf/alipay_python: 支付宝 alipay python接口,支持担保交易,即时到帐和自动发货接口...
  12. uni.request POST 请求后台接收不到参数
  13. 第一阶段意见汇总以及改进
  14. dreamweaver 8的替换功能
  15. fp16和fp32,神经网络混合精度训练,PYTORCH 采用FP16,Libtorch采用FP16,神经网络混合精度三种避免损失,TensorRT模型转换及部署(一)
  16. 程序员常用不常见很难得的地址大全
  17. Javascript时间脚本收集
  18. 基于 Elasticsearch 存储的HBase二级索引方案
  19. 来自阿里十余年的老架构师自述:成为架构师你只差了一步
  20. 无线上网认证之Portal认证——企业WiFi管家

热门文章

  1. 电脑族应该怎么保护眼睛
  2. 【夸夸其谈】浅谈rogue元素在商业手游的运用
  3. 移动端布局 - rem布局
  4. 不可不知的JavaScript面向对象
  5. java 根据经纬度坐标查询出来附近店铺
  6. mod_security简要安装设置指南
  7. div2 649 D. Ehab‘s Last Corollary
  8. 基金申请-2:期刊如何批量索引SCIE、EI、ISTP (CPCI)?
  9. AI数学基础——经验分布,熵
  10. linux基本安全防护