第一次学习使用Pyqt5心得和体会(UI可以生成py文件,UI和业务逻辑最好分开,即UI生成py后,再写一个main.py来放置业务逻辑)

1. pip install PyQt5

2.python 3.5以上版本安装成功后还需安装pyqt5-tools

pip install pyqt5-tools

可能会多出一些包

3. 直接输入designer命令即可启动Qt (终端或cmd都行)

designer

一般创建的都是main_window

现在应该产生了一个.ui类型的文件,下一步需要将ui文件编译为py文件

4. 注意这里export.ui是我刚才保存的ui文件,如果文件名不是export.ui需要自行替换,export.py是将要生成的py文件,建议设置为与ui文件相同的名称
pyuic5 -o export.py export.ui

执行成功后当前目录下应该有一个py文件

5. py文件已经能够编译出来,接下来就是运行了。
打开我们刚刚编译好的export.py会发现里面没有程序入口的代码,这是因为PyUic只会生成在designer中定义的东西,所以还需要加入程序入口的代码。
这里我建议另起一个main.py作为程序入口和业务逻辑的实现,这样就可以实现UI和业务逻辑分离,否则一旦修改了UI重新生成就会将之前的py文件全部覆盖,十分不友好
所以我们新建main.py 加入程序入口相关的代码
我的main.py代码如下
注意:xxxxx为刚才生成的py文件名称,我这里是export,根据情况替换

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import 
export
class Example(QMainWindow):
    def __init__(self):
        self.app = QApplication(sys.argv)
        super().__init__()
        self.ui = export.Ui_MainWindow()
        self.ui.setupUi(self)
        # 初始化
        self.init_ui()
 
    # ui初始化
    def init_ui(self):
        # 初始化方法,这里可以写按钮绑定等的一些初始函数
        self.show()
 
 
# 程序入口
if __name__ == '__main__':
    e = Example()
    sys.exit(e.app.exec())

6.后续如果需要打包成exe的话(pip install pyinstaller)

Pycharm的控制终端中输入“pyinstaller -F -w MainTest.py”命令进行打包。其中pyinstalle是打包命令。

详细说明如下:

pyinstaller --paths PyQt5模块路径 -F -w --icon=窗口图标文件路径 文件名.py

--paths:指定第三方模块的安装路径

--icon:可选,设置窗口图标

-F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用(多个文件即有互相导入)(其实也不是,这个真正表示只打包成一个exe即可,但这样的缺点是比较慢,单文件打包会将整个项目和相关依赖都打包进一个exe,此时一般只需要发送exe文件给别人即可正常运行。它的缺点是:启动相对另一种打包方式更缓慢

-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,

-K, –tk 在部署时包含 TCL/TK

-a, –ascii 不包含编码.在支持Unicodepython版本上默认包含所有的编码.

-d, –debug 产生debug版本的可执行文件

-w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)

-c,–nowindowed,–console 使用控制台子系统执行(默认)(只对Windows有效)

打包完成后,会在当前项目中生成一个后缀为exe的可执行文件,双击该文件即可以运行python项目,如下图所示

注意如果有导入外部的图片文件等,需要将外部所有图片文件转为二进制文件,打包才能打上

PyQT5制作程序中使用到的ico等一系列图标文件,要先经过.qrc文件转成.py文件后,才可跟随打包文件一同打包。

1. 首先创建一个resource.qrc文件,将图片文件全部写进去,例如:

<RCC>

 <qresource>

      <file>bk7.png</file>

      <file>select.png</file>

      <file>logo2.png</file>

 </qresource>

</RCC>

2.然后,使用pyrcc5命令,将.qrc文件转换成.py文件

pyrcc5 resource.qrc -o resource_rc.py

3.注意哦,在需要打包的main文件里,使用图片的路径时改为:加个冒号

4.最后在将要打包的***.py文件中将转后的.py文件import进去即可

import resource_rc

7.再次强调一下打包方式:

7.1 单文件打包

单文件打包会将整个项目和相关依赖都打包进一个exe,此时一般只需要发送exe文件给别人即可正常运行。它的缺点是:启动相对另一种打包方式更缓慢。
输入命令:

pyinstaller -w -F -i '.\Plot.ico' main.py

参数解释:
  -F :单文件打包
  -w:不要console(取消类似于cmd的黑框框)
  -i:后面接图标地址(图标一定要是标准的ico格式)
  最后面接的是要打包的程序:main.py

运行命令成功后:

  会生成三个文件夹和一个.spec文件,.exedist文件夹中。

7.2 单文件夹打包

  只需要将dist下的文件夹生成压缩包发给别人,别人解压,找到运行的exe即可运行程序。 相比于单文件打包命令, 只需将命令中的-F换成-D即可。

pyinstaller -w -D -i '.\Plot.ico' main.py

  打包完成后,同样生成了三个文件夹和一个.spec文件。 不同的是:在dist文件夹里生成了一个文件夹,而.exe就在该文件夹内。这种类型的打包启动速度相对比较快,但是不方便我们查找。而且需要我们格外小心,不要误删或者移动了里面的文件。

  PS:加 -F 虽然是生成了单个exe可执行文件,看上去很清爽,但是这个命令它把所有的环境都整合在了一起,如果我们的程序比较大的话,启动时就会非常慢(如果你的电脑性能一般的话,加载时间会更长)。因为它加载的数据都是静态加载的,需要去封装的包里一个个的去查找,所以速度变慢了。因此去掉 -F 之后,我们的启动速度流畅无比,体验效果也大大提升。去掉它之后,生成的dist文件中你程序中要用到的环境都会被放在dist中,这个时候所用到的环境就变成了动态加载的,速度就跟你用代码启动程序的速度是一样的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享时分

你觉得有价值的话再打赏谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值