Qt for Python(PySide6)开发中遇到的各种问题及解决方案

一.pycharm外部工具设置

打开PyCharm,菜单中打开 文件->设置,工具->外部工具

1.设置pyside6-uic


程序:选择python安装目录下的pyside6-uic.exe文件位置
实参:$FileName$ -o $FileNameWithoutExtension$.py
工作目录:$ProjectFileDir$

2.设置pyside6-rcc


程序:选择python安装目录下的pyside6-rcc.exe文件位置
实参:$FileName$ -o $FileNameWithoutExtension$_rc.py
工作目录:$FileDir$

3.设置pyside6-designer


同理找到 pyside6-designer.exe 位置
工作目录:$ProjectFileDir$

使用

通过以上设置后,就可以在主窗口右键快捷使用对应的工具了,比如qt的资源文件.rc ,要想在PySide中编译使用,需要将其转换成py文件。直接在qrc文件窗口 右键,点击添加的rcc工具即可快速生成,如下:

同理,Qt的.ui文件也是需要转换成py文件才能使用的,按照以上方法 右键点击 PySide6_uic即可。

而我们添加的PySide6_designer,是可以快速打开QDesigner窗口。

二.qml放到资源文件

qml要放进资源文件中去,要不然打包的时候就需要将qml源码放到打包目录中,否则运行的时候找不到。如果将qml放到资源文件中,通过rcc将qrc文件转换成py文件,这样就无法将qml源文件放进打包的运行目录,防止源码泄露。但是如果每次修改qml代码,想要编译看效果 ,都需要重新执行一遍使用rcc将qrc文件转换成py文件。

    # qml_file = Path(__file__).resolve().parent / "main.qml"
    qml_file = "qrc:/main.qml"
    engine.load(str(qml_file))

三. 防止程序重复启动

使用QSharedMemory创建共享内存的方式来实现。

	app = QApplication(sys.argv)
    process_name = "xxxx.exe"  # 被检查的进程名称
    sharedMemory = QSharedMemory(process_name)
    if sharedMemory.attach(QSharedMemory.ReadOnly) :
        QMessageBox.warning(None, "警告", "程序正在运行中,请勿重复打开.")
        sys.exit(-1)
    sharedMemory.create(1)

四.打包

pycharm 底部侧边工具栏,点击“终端”,会自动定位到当前项目的目录下,直接通过 pyinstaller xxx.py 即可打包

详情可参考:
https://blog.csdn.net/luoyayun361/article/details/144190347
https://www.pythonguis.com/tutorials/packaging-pyside6-applications-windows-pyinstaller-installforge/

五.编译设置

可在菜单 设置->Python解释器 中设置解释器

可选择想要添加的解释器类型

然后就可以在标题栏这里找到可以配置编译的设置

为你当前的项目设置编译运行配置:

配置完成后直接点击运行按钮即可。

作者:luoyayun361

物联沃分享整理
物联沃-IOTWORD物联网 » Qt for Python(PySide6)开发中遇到的各种问题及解决方案

发表回复