PyQt5 关于Qt Designer的初步应用和打包过程详解
作者:氢键H-H 发布时间:2023-07-31 20:26:32
Qt Designer的介绍
在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成.py文件。 Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages\pyqt5-tools”下。若要启动Qt Designer可以直接到上述目录下,双击designer.exe打开Qt Designer;或将上述路径加入环境变量,在命令行输入designer打开;或在PyCharm中将其配置为外部工具打开。下面以PyCharm为例,讲述PyCharm中Qt Designer的配置方法。
机器人开发之路总会有很多的艰难险阻,但虽然辛苦,还是选择了那种滚烫的人生。很幸运,获得了机器人开发领域优质创作者身份认证。征途漫漫,惟有奋斗,共勉!
1. 缘由
开发过程中,难免需要自己手动开发一些交互工具简单的如自动化脚本复杂一点的呢就是带界面交互的应用软件了
QT呢就是一款很受欢迎的图形用户界面应用程序开发框架只宠Python的搬运工,就需要Python和Qt库融合的工具,它就是 PyQt5
在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成其实现了视图和逻辑的分离,从而实现了开发的便捷
2. 搭建
2.1. 安装
若未安装pyqt5,则需先安装:
$ pip3 install pyqt5
然后安装常用工具:
$ pip3 install pyqt5-tools pyinstaller
pyqt5和pyinstaller有版本对应关系,推荐同时期安装,如果版本偏差,会导致pyinstaller打包一直失败。
2.2. 打开
找到 Qt Designer 应用程序启动文件,这边的地址是对应Python目录下的 \Lib\site-packages\qt5_applications\Qt\bin\designer.exe
可以添加桌面快捷方式方便后续打开
打开 designer.exe
创建新的Form给出了5个模板,但实际上只有3种不同类型的模板,分别是Dialog、Main Window和Widget
Main Window 主界面
一个窗口是父/子的顶部,通常显示标题栏和边框。底层窗口系统(Windows、KDE、GNOME等)将为窗口提供策略,如标题栏/边框样式、布局和焦点等。
Widget 小部件
屏幕上的一个矩形区域,用于显示和用户交互,包括按钮、滑块、视图、对话框和窗口等。所有窗口小部件将在屏幕上显示某些内容,许多窗口小部件也将接受来自键盘或鼠标的用户输入。
Dialog 对话框
通常是临时的,可以设置不同的标题栏外观,主要用于通知或收集输入窗口,并且底部或右侧通常具有OK、Cancel等按钮。
这里选择创建一个Main Window
在QT Designer界面里分为5个区域,正中间区域是软件设计的界面,左右两侧是功能区域,功能区域的说明如下:
Widget Box:控件区,软件的功能控件都在此区域生成,可以拉拽控件到模板上实现可视化软件设计。
对象查看器:软件的目录结构,显示模板中所有控件的类型,能帮助设计者快速找到控件。
属性编辑器:控件属性区,主要修改控件的属性。
信号/槽编辑器:对象间的通信机制。如单击按钮(信号 Signal)时候所触发的事件(槽 Slot)。
2.3. 设计
拉拽个按钮控件,并保存为csdn.ui
2.4. 转换
打开刚刚保存的ui文件,可以发现其实也就是XML文件
现在需要通过工具转换成py文件
$ pyuic5 源文件.ui -o 目标文件.py
即:
$ pyuic5 .\csdn.ui -o .\csdn.py
推荐作为py脚本,方便后续或批量转换
3. 效果
3.1. 引用
创建一个逻辑文件logic.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from csdn import Ui_MainWindow
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_())
通过上述代码,继承了Ui_MainWindow类,使用其构造方法构造主窗口并定义了程序的入口,通过创建QApplication对象来创建Qt窗口
3.2. 启动
启动logic.py文件
3.3. 打包
可以通过pyinstaller进行打包
普通
$ pyinstaller -w logic.py
在dist文件夹内生成工程文件夹 logic,寻找logic.exe文件启动
整合
$ pyinstaller -F -w logic.py
在dist文件夹内生成logic.exe整合文件,点击启动(启动较久)
配置信息在执行以上两种打包时候,会产生.spec
配置文件,可以通过调整配置文件执行打包
$ pyinstaller logic.spec
3.4. 触发
使用connect()方法将信号与槽函数绑定在一起当信号发射时,连接槽函数将会自动执行
如把点击pushButton
按钮作为一个信号
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.setupUi(self)
# 将pushButton信号与槽函数touch_button绑定
self.pushButton.clicked.connect(self.touch_button)
def touch_button(self):
print('点击按钮了')
此时点击按钮,可看到终端显示提示了
来源:https://blog.csdn.net/qq_32618327/article/details/120438653
猜你喜欢
- 在实现鼠标停在某元素上,会出现提示信息,以前我们太多是采用javascript脚本代码来实现。看了怿飞的IE中伪类:hover的使用及BUG
- (function($) { (function($) { $.preload = function(data, cfg) { return
- ALTER DATABASE DATAFILEd:\ORANT\DATABASE\USER1ORCL.ORA RESIZE 10
- 在ASP编程中,身份认证可以说是常要用到的。但怎么样才能做到认证的安全呢?表单提交页面:sub.htm &
- 安装pyinstallerpip install pyinstaller制作项目的.spec文件 进入django项目所在路径,
- 近日,有关微软Open XML标准的问题又引发了某些业内人士的关注。其一是因为日前ISO(国际标准组织)成员南非和巴西相继就ISO批准微软的
- 我就废话不多说了,直接上代码吧:package mainimport ("flag""fmt"&qu
- 我们今天就来看一下PHP 7正式版的算法和 wordpress 应用在其上的性能表现。PHP7 的安装,真是非常地向下兼容,下载,解压,把之
- python 2.6编写,自己瞎写的,备用''' Export and Import ElasticSe
- 1.导入依赖包import ( "github.com/spf13/viper")2.编写ya
- 作者:Robert Lair and Jason Lefebvr Intensity Software, Inc.
- 阅读上一篇:微软建议的ASP性能优化28条守则(2) 技巧 5:不要将数据库连接缓存在 Application 或 Session 对象中
- phpstorm配置debug环境众所周知,在渗透测试进行代码审计的时候,往往要审计代码的执行过程,亦或是在开发php项目的时候,需要了解代
- 本文实例为大家分享了python实现五子棋小游戏的具体代码,供大家参考,具体内容如下暑假学了十几天python,然后用pygame模块写了一
- 语言是信息传播的主要障碍。多语言网站,顾名思义就是能够以多种语言(而不是单种语言)为用户提供信息服务,让使用不同语言的用户都能够从同个网站获
- 英文文档:setattr(object, name, value)This is the counterpart of getattr().
- 在更改列顺序之前,你需要考虑是否的确需要更改表中的列顺序。SQL的核心要点是从数据存储格式获取应用。总应指定检索数据的顺序。在下面的第1条语
- 匹配括号接下来,我们使用栈解决实际的计算机科学问题。比如我们都写过这样所示的算术表达式, ( 5 + 6 ) ∗ (
- 1)添加下面一句话到模型中for p in self.parameters(): p.requires_grad = False比如加载了r
- 别误会,IE是不支持CSS3高级选择器,包括最新的IE8(详见《CSS选择器的浏览器支持》),但是CSS选择器的确是很有用的,它可以大大的简