• 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的任务栏上
    • 调整窗口的大小到400x300,也移动到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

  • 相关阅读:
    MySQL 获得当前日期时间 函数
    Jquery 将表单序列化为Json对象
    Eclipse远程调试(远程服务器端监听)
    使用Eclipse进行远程调控
    Java基础教程(3)--回顾HelloWorld
    Java基础教程(2)--Java开发环境
    Java基础教程(1)--概述
    4.9上机
    4.2上机
    第四周作业
  • 原文地址:https://www.cnblogs.com/asis/p/pyqt5-cx_freeze.html
Copyright © 2020-2023  润新知