动态加载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资源的方法。