我对 PyQt6 和 PySide6 中的资源系统有疑问。首先为什么 PySide6 仍然支持 qrc 系统而 PyQt6 不支持。其次,如何在 PyQt6 中使用图像作为小部件的背景,我看到了 addSearchPath() 和 setSearchPath() 的概念,但我不明白如何使用它并且它不起作用。
QtCore.QDir.addSearchPath('icons', 'path_to_icons/')
icon = QtGui.QIcon('icons:myicon.png')
我对 PyQt6 和 PySide6 中的资源系统有疑问。首先为什么 PySide6 仍然支持 qrc 系统而 PyQt6 不支持。其次,如何在 PyQt6 中使用图像作为小部件的背景,我看到了 addSearchPath() 和 setSearchPath() 的概念,但我不明白如何使用它并且它不起作用。
QtCore.QDir.addSearchPath('icons', 'path_to_icons/')
icon = QtGui.QIcon('icons:myicon.png')
检查如何在 PyQt6(没有 pyrcc)中提供资源?了解更多信息。
最有可能的是,“path_to_icons”不正确,而不是使用相对路径,您必须构造绝对路径。
├── icons
│ └── myicon.png
└── main.py
import os
import sys
from pathlib import Path
from PyQt6.QtCore import QDir
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QToolButton
CURRENT_DIRECTORY = Path(__file__).resolve().parent
def main():
app = QApplication(sys.argv)
QDir.addSearchPath("icons", os.fspath(CURRENT_DIRECTORY / "icons"))
icon = QIcon("icons:myicon.png")
assert not icon.isNull()
button = QToolButton()
button.setIcon(icon)
button.resize(100, 40)
button.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()