Wxf`s Fantasy World

share something useful


Qt Python开发流程

用cpp+cmake开发,太繁琐了,切换到qt-python

环境配置

需要python解释器、pyside6包
下面三张照片展示python解释器是怎么配置的,其中python的虚拟环境搭建可以参考文章msys2使用anaconda

根据上述文章搭建一个名为qt的环境,激活环境,并安装pyside6的包

conda env list
conda create -n qt python=3.10
conda activate qt
pip install pyside6
conda deactivate

然后可以放手开发了。

界面开发

这个是ui界面,可以在上面拖拽放控件,这个ui文件对应一个xml文件,如下: 可以直接编辑xml文件,让ai生成相应界面,但是太难调整了,不如直接拖拽。实践中发现最好前后端分离,就是说前面的界面拖拽生成,界面样式和逻辑分开实现。
要在python代码中使用ui文件,必须通过uic.exe把xx.ui转换为xx.py,再把这个生成的xx.py作为包引入,为此我写了一个脚本,如下

#!/bin/bash

if [ -f "$1.py" ]; then
    rm "$1.py"
    pyside6-uic.exe "$1.ui" -o "$1.py"
    echo "转换完成,文件地址:$(realpath "$1.py")"
else
    pyside6-uic.exe "$1.ui" -o "$1.py"
    echo "转换完成,文件地址:$(realpath "$1.py")"
fi

代码组织

新建ui.py文件,所有ui相关的逻辑都放在这个文件,特点就是ui绘制、界面行为、信号-槽的实现解耦,可以随意扩充。

打包发布

同样写了一个脚本,该脚本会在项目根目录下的.dist文件下生成可执行的exe文件及相关库文件,可以在没有python环境的电脑上运行 。里面用到的工具pyinstaller、上面的pyside6-uic,在qt虚拟环境中去找

#!/bin/bash

# 检查是否提供了Python脚本作为参数
if [ -z "$1" ]; then
    echo "Usage: $0 <python_script.py>"
    exit 1
fi

DISTPATH="./.dist"
TMPPATH="./.tmp"

echo "Building $1 with PyInstaller..."
pyinstaller $1.py --workpath $TMPPATH --distpath $DISTPATH
echo "remove tmp file"
rm -rf $TMPPATH
echo "Generated files are in the root directory: $DISTPATH"

end