到现在还是搞不懂Qt,Qt4,Qt5,Qt Designer,Qt Creator,Qt Widgets,Qt Quick,PyQt5,PySide2,PyUic,PyRcc这些乱七八糟的名词的关系,真是好复杂的赶脚QAQ
下载地址: https://www.python.org/downloads/
标有[bugfix]的版本不建议下载,建议下载标有[security]的版本
下面这里是下载的地方,点想下载的版本后面的"Download"即可
有些下载地址点进去显示"No installer",注意看下面描述,会有说明应该下载具体哪个版本。
比如我点击下载Python 3.9.15,进去提示Python3.9.13是Python 3.9的最后一个完整错误修复版本,所以Python 3.9建议下载Python3.9.13。
我选择Python3.9.13下载
进去直接拉到最底下,Files一栏,根据自己电脑系统选择版本,我就选"Windows installer (64-bit)"
下载完是 python-3.9.13-amd64.exe
这样的安装包,和普通应用一样安装即可。
(我的安装路劲选择在E:\Python3\
)
安装过程若是没有勾选配置环境变量,需要自己配置环境变量,这里不再赘述。
(我的环境变量添加了2个:E:\Python3
和 E:\Python3\Scripts
)
参考来源: https://zhuanlan.zhihu.com/p/484999552
[备注:我的是win10环境下,上述参考来源有详细介绍,我这简写我自己用的步骤]
pip install virtualenv
执行超时可以修改镜像源,使用清华大学开源软件镜像站进行安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
//我新建的文件夹
E:\Python_Virtual_Env
E:
cd E:\Python_Virtual_Env
virtualenv env
在E:\Python_Virtual_Env
目录下创建一个名为 env
的虚拟环境
//激活脚本
E:\Python_Virtual_Env\env\Scripts\activate.bat
//退出脚本
E:\Python_Virtual_Env\env\Scripts\deactivate.bat
E:\Python_Virtual_Env\env\Scripts
E:\Python_Virtual_Env\env\Scripts>activate
(env) E:\Python_Virtual_Env\env\Scripts>
下执行pip install shiboken2
pip install PySide2
上面这个安装会超时,这里改用清华大学开源软件镜像站进行安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple shiboken2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PySide2
也可以下载whl安装包文件,然后pip离线安装工具包
PySide2工具包whl文件下载地址:https://pypi.org/project/PySide2/#files
把安装包放入E:\Python_Virtual_Env\env\Scripts
下,直接pip命令安装即可:
pip install PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win_amd64.whl
集成在PyQt5-tools里面
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-tools
安装成功后, 在Python虚拟环境Scripts
文件夹下会多出许多可执行文件
安装Qt Creator
安装过程略,我安装的是Qt 5.12.10
版本
Qt 配置Python虚拟环境
打开Qt Creator,依次点击顶部菜单栏的 帮助 > 关于插件
,在弹出的窗口中找到Other Languages
选项,勾选LanguageClient
(若已是勾选状态就不用管)。
依次点击顶部菜单栏的 工具> 选项
,弹出窗口有2个地方需要设置,第一个是Language Client
选项,需要新建一个配置,具体步骤如下图
新建完成后,直接点击左下角的绿色三角形运行
图标,看到右边执行程序用的是我们虚拟环境中的Python.exe,说明配置成功了。
# main.py
from PySide2.QtCore import QObject
from PySide2.QtGui import QGuiApplication
from PySide2.QtQml import QQmlApplicationEngine
# import os
import sys
class MyUiSys(QObject):
def __init__(self, file):
super().__init__()
self.Engine = QQmlApplicationEngine()
self.Engine.load(file)
if __name__ == "__main__":
app = QGuiApplication(sys.argv)
UI = MyUiSys("main.qml")
if not UI.Engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
main.qml
// main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
}
qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qmlfile>
qresource>
RCC>
运行main.py
成功弹出Qt窗口
当然,我们直接cmd命令行执行py程序也可以启动UI窗口,执行指令记录如下:
C:\Users\Admin\Desktop\pyTest>E:\Python_Virtual_Env\env\Scripts\activate.bat
(env) C:\Users\Admin\Desktop\pyTest>python main.py
我们工程配置好图片资源后,会把图片资源打包成xx.py
的二进制文件,操作是cmd下执行以下命令(下面的xx和xx_rc名字可以自己任意取,只要对得上就行)
pyrcc5 xx.qrc -o xx_rc.py
然后在工程的main.py
里加上一句
import xx_rc
就可以在工程中用qrc:/
开头来调用xx.py
中的图片资源
source: "qrc:/Image/Button.png"
但是我们是在Python虚拟环境中创建和编译的工程,所以打包指令也得用虚拟环境下的pyrcc5.exe
才行
我写了个简单的bat脚本,来一键更新qrc资源,只要修改前面几个设置项,就可以在你电脑上运行啦
:: Update.bat
:: encode by: ANSI (GBK GB2312)
@echo off
:: --------------------------设置源文件和目标文件
set "orgFileName=qml.qrc"
set "dstFileName=qml.py"
:: --------------------------设置是否开启Python虚拟环境
set "Python_VirtualEnv_ON=1"
set "python_env_dir=E:\Python_Virtual_Env\env\Scripts"
:: --------------------------设置使用的Python工具 (pyrcc5 或 pyside2-rcc)
set "python_tool=pyrcc5"
:: --------------------------开始运行
echo 当前目录:%~dp0
echo.
if %Python_VirtualEnv_ON%==1 (
if EXIST %python_env_dir%\activate.bat (
call %python_env_dir%\activate.bat
echo Python虚拟环境已打开
echo.
) ELSE (
echo 错误: Python虚拟环境打开失败, 找不到activate.bat
echo.
pause
exit
)
)
IF EXIST %orgFileName% (
echo 检测到 %orgFileName%
echo.
) ELSE (
echo 错误: 缺少%orgFileName%源文件
echo.
pause
exit
)
echo 尝试删除旧版 %dstFileName%
echo.
IF EXIST %dstFileName% (
copy %dstFileName% __backup__.py | find ""
echo 已删除旧版本 %dstFileName%
echo.
) ELSE (
echo 没有旧版本%dstFileName%文件
echo.
)
%python_tool% %orgFileName% -o %dstFileName%
IF EXIST %dstFileName% (
echo %dstFileName% 更新成功
echo.
IF EXIST __backup__.py (
del __backup__.py
)
) ELSE (
echo %dstFileName% 创建失败, 更新失败, 请检查配置
echo.
IF EXIST __backup__.py (
copy __backup__.py %dstFileName% | find ""
del __backup__.py
echo 已还原旧版本
echo.
)
)
if %Python_VirtualEnv_ON%==1 (
if EXIST %python_env_dir%\activate.bat (
call %python_env_dir%\deactivate.bat
echo Python虚拟环境已关闭
echo.
) ELSE (
echo 错误: Python虚拟环境关闭失败, 找不到activate.bat
echo.
pause
exit
)
)
pause
上述讲解若有不对的地方,欢迎指正,毕竟我也是不是很懂