我有一个一直在开发的应用程序,最近我听说了 qml 和 qrc 文件系统,在此之前,我只使用 PySide6 和 qss。所以我一直在使用 qml 为这个应用程序制作 GUI,但我遇到了困难。我想给一个按钮一个图标,所以在我的 qrc 文件中我写了这个:
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
<file>menu_icons/menu.png</file>
</qresource>
</RCC>
并为我的按钮提供我这样写的图标:
Button {
id: "menu_toggle_button"
text: qsTr("Menu")
flat: true
width: menu.width
font.family: "Times New Roman"
font.pointSize: 20
icon.source: ":/menu_icons/menu.png"
}
但这似乎不起作用,当我运行代码时,我收到此消息:
file:///C:/Users/User/AppData/Local/Programs/Python/Python39/lib/site-packages/PySide6/qml/QtQuick/Controls/Material/Button.qml: QML IconImage: Cannot open: file:///C:/Users/User/AppData/Local/Programs/Python/Python39/lib/site-packages/PySide6/qml/QtQuick/Controls/Material/:/menu_icons/menu.png
这是我的Python代码:
import sys
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.quit.connect(app.quit)
engine.load('main.qml')
sys.exit(app.exec())
我尝试将 icon.source: ":/menu_icons/menu.png"
更改为 icon.source: "qrc:/menu_icons/menu.png"
但这只是将错误消息更改为包含 qrc:/
而不仅仅是 :/
那么我做错了什么?
最佳答案
您必须执行以下操作:
将 .qrc 转换为 .py:
pyside6-rcc resources.qrc -o resources_rc.py
。将
import resources_rc
添加到main.py使用完整路径:
icon.source: "qrc:/menu_icons/menu.png"
。
关于python - 如何在QML文件中使用QRC文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69311344/