PyQt5环境搭建及cx_freeze打包exe

Python的图形库也有好几个,Qt文档和使用面还是要广一些。
打包成可执行文件的也有好几个,PyInstaller用的比较多,但是PyInstaller目前还不支持Python3.6(开发版支持3.6,但是我测试我的项目,打包出来的exe执行结果有问题)。
于是就选择了PyQt+cx_freeze。
安装PyQt5和cx_freeze用pip命令即可安装,非常方便。

pip install PyQt5
pip install cx_freeze

安装完毕后,测试一下:

新建hello.py

内容如下

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon

if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = QWidget()
    icon = QIcon("icon.png")
    w.setWindowIcon(icon)
    w.resize(400, 300)
    w.move(400, 300)
    w.setWindowTitle('hello world')
    w.show()

    sys.exit(app.exec())

说明:
* 开一个Qt的窗口,并将icon.png作为它的icon,这个icon也会显示在windows的任务栏上
* 调整窗口的大小到400×300,也移动到400,300处
* 将窗口的标题指定为”hello world”

使用python hello.py命令,看到下面的图形界面,证明PyQt安装正常

下面就是将这个hello.py打包成可执行文件了。

打包exe文件

新建setup.py,内容如下

from cx_Freeze import setup, Executable
import sys
base = 'WIN32GUI' if sys.platform == "win32" else None


executables = [Executable("hello.py", base=base, icon='icon.ico')]

packages = []
include_files=['icon.png']
options = {
    'build_exe': {
        'packages':packages,
        'include_files': include_files
    },

}

setup(
    name = "prog",
    options = options,
    version = "1.0",
    description = 'desc of program',
    executables = executables
)

说明:
* executable内的hello.py就是要打包的python脚本,icon就是这个exe的图标
* include_files表示要打包的其他文件,我这里是有一个icon.png需要一起打包
* setup内的name, version, description都可以自己填写,相信大家都知道这些是什么含义

在命令行转到刚刚的setup.py文件的目录,使用如下命令打包exe:

python setup.py build

打包以后,出来了一大堆,文件夹大小是179M。里面大概像这个样子,hello.exe就是打包出来的可执行文件了

双击exe,运行完全正常。
相关源码:Github-Syler-Fun-PyQt-cx_freeze

发表评论

电子邮件地址不会被公开。 必填项已用*标注