PySide6动态加载ui文件同时使用qrc资源文件

动态加载ui文件

这里使用的是 PySide6 的QtUiTools.loadUiType函数,返回出对应.ui文件的基础类和自身的类。具体代码如下
myWindow.py:

from PySide6.QtUiTools import loadUiType

formType, baseType = loadUiType('my_window.ui')

class MyWindow(baseType, formType):
	def __init__(self):
		super(MyWindow, self).__init__()
		self.setupUi(self)
		...  # 此时控件已经加载完成,可以编写具体逻辑

main.py:

import sys

from myWindow import MyWindow
from PySide6.QtWidgets import QApplication

app = QApplication([])
win = MyWindow()
win.show()
sys.exit(app.exec())

qrc文件

qrc文件是PySide6以及QT系列的资源文件,用于管理资源。这类文件的动态加载方法我没有找到,所以是通过pyside6-rcc.exe功能把qrc转成了py文件来进行使用的。
qrc文件名为:resources.qrc

动态加载

然而在正常使用是发现,动态加载ui文件下没有办法将qrc转成的py文件进行指定,结果运行后报出了下面错误:

Traceback (most recent call last):
  File "<stdin>", line 23, in <module>
ModuleNotFoundError: No module named 'resources_rc'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
...
    loadUiType('my_window.ui'):
SystemError: <built-in function loadUiType> returned a result with an error set

进程已结束,退出代码1

发现python会去寻找一个叫resources_rc的模块,这个模块我没有找到,并且也没有引入过,并且其名称正好是“我的qrc文件名”_rc。所以我想这应该是ui模块在动态加载的时候自动 import 了。


所以,目前我的方法就是:先将需要的qrc文件通过pyside-rcc转成py文件。**注意:**这里的py文件文件名需要是:原qrc文件名_rc。之后再将这个文件放到 main.py 同目录下,再运行 main.py 便可以达到在动态加载ui文件下使用qrc资源的目的。

目前这种方法是我尝试出来的,因为英语不好不知道官方手册中是否有更好的动态加载ui文件下引入qrc资源的方法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值