Qt开发-使用Python进行桌面端开发

Qt下载

离线安装包网址:http://download.qt.io/archive/qt/

建议

  • Qt5 安装 5.14.2版本 这是Qt5最后一个可以离线安装的版本。
  • Qt6安装最新的

之前在线安装还能选择5.15版本,现在只能安装6.x版本了。

所以还是建议直接安装6.x版本。

版本区别

那么 Qt 5 的各个版本,该如何选择呢?

  • 如果你需要用到 QtWebkit,则只能用 Qt5.5及其以前的版本。
  • 如果你需要 PDF 的支持,建议升级至 5.15,因为新增模块 Qt PDF
  • 如果你需要 SSL 的支持,建议升级至 5.15,因为 5.13 开始已自支持 OpenSSL 1.1 及其以上。
  • 如果你常用 QImage,建议升级至 5.15,因为缩放和转换的许多方法都升级成多线程的。
  • 如果你常用 QtQuick,建议升级至 5.15,因为 5.14 开始 QtQuick 不再局限于 OpenGL 引擎加速。
  • 如果你常用 QNetworkAccessManager,建议升级至 5.15,因为开始支持超时设置 setTransferTimeout
  • 如果你发行在 Windows 平台,建议升级至 5.15,因为 5.14 开始对高DPI的设备有更好的支持。
  • 如果你需要开发 安卓APP,建议升级至 5.15,因为该版本完善了安卓开发文档。

Qt Widgets和Qt Quick

两种方式对比:

img

img

img

开发工具推荐

Qt Creater

官方提供的工具功能比较强大,但是界面字体太小,代码提示及格式化功能不太强,但是对QML的支持比IDEA好。

IDEA/PyCharm

安装Python插件和QML Editor插件即可。

image-20211102142535061

安装Python

这里我直接整理了64位和32位的3.8.1版本下载链接给大家:

推荐安装32位,如果程序只需要在64位环境运行可以下载64位的。

官方下载地址:https://www.python.org/downloads/

请注意,一定要勾选 Add Python 3.8 to PATH,这样可以将 Python 命令工具所在目录添加到系统 Path 环境变量中,以后开发程序或者运行 Python 命令会非常方便。

其他我们保持默认即可,然后点Install Now即可完成安装。

设置镜像源

永久生效

进入当前用户目录中(Windows + R 输入 . ),创建pip文件夹,pip文件夹中创建配置文件 pip.ini

复制以下内容

1
2
3
4
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

临时生效

1
pip install pyside2 -i https://pypi.douban.com/simple/

安装PySide2

这里使用了豆瓣的镜像

1
pip install pyside2 -i https://pypi.douban.com/simple/

如果报错

No module named ‘PySide2’

说明没安装pyside2,如果安装后还报错,可能是电脑上有多个Python环境,在运行设置里修改使用的Python即可。

离线包下载

https://download.qt.io/official_releases/QtForPython/

离线安装

1
pip install PySide2-5.15.0-5.15.0-cp35.cp36.cp37.cp38-none-win32.whl

注意

PySide6只能在64位环境安装,要求Python是64位版本的。我就是安装32位的Python,一直安装不上PySide6。

创建项目

image-20211101190352164

前两个都是用C++开发,第三个是用Python开发。

这里就选择使用Python开发,后面又有4个选项

  • 第一个是空项目,有基本的代码但是没有创建窗口。

  • 第二个能运行有窗口但是UI和逻辑是在一个文件中。

  • 第三个是分离的,UI使用的是XML的形式,可以图形化界面编辑。

    Qt Widgets+QSS

  • 第四个也是分离的,UI是用的QML和Flutter写UI的方式很像。

    QML:这是 Qt 为 Qt Quick 打造的描述界面的新语言,然而就语法上,基本就是对 Javascript 做了扩展。几乎所有 Javascript 的语法都可以使用。

这里推荐选后两个即可。

发布程序

安装pyinstaller

1
pip install pyinstaller

生成exe

方式1/2

image-20211102001913029

打包命令

1
pyinstaller mainwindow.py -Fw

这种方式打出的是单文件,所以后面的两种不能用这种方式,因为后两种需要复制界面文件。

方式3

image-20211102001554811

打包命令:

1
pyinstaller mainwindow.py --noconsole --hidden-import PySide2.QtXml

项目下就会生成dist目录,里面就有生成的exe。

但是运行报错,我们要把界面文件复制到生成的目标根目录,比如form.ui.

方式4

image-20211102001617418

打包命令:

1
pyinstaller main.py --noconsole --hidden-import PySide2.QtXml

同样我们也要把界面文件复制过来,如main.qml

C++构建与打包

如果用的C++方式,运行是直接生成exe的,但是无法运行

默认构建后,目录下的exe不能运行,会缺少依赖的DLL。

添加环境变量(根据自己Qt的安装路径修改)

D:\Tools\Qt\6.2.1\mingw81_64\bin

进入exe的生成目录运行

1
windeployqt.exe 程序名称.exe

这样所有依赖的DLL就会自动生成。

应用程序图标是放在可执行程序里面的资源。

可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico" 指定。

比如

1
pyinstaller main.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"

注意参数一定是存在的ico文件,不能是png等图片文件。