2

我对 PyQt6 和 PySide6 中的资源系统有疑问。首先为什么 PySide6 仍然支持 qrc 系统而 PyQt6 不支持。其次,如何在 PyQt6 中使用图像作为小部件的背景,我看到了 addSearchPath() 和 setSearchPath() 的概念,但我不明白如何使用它并且它不起作用。

 QtCore.QDir.addSearchPath('icons', 'path_to_icons/')
 icon = QtGui.QIcon('icons:myicon.png')       
4

1 回答 1

2
  1. 检查如何在 PyQt6(没有 pyrcc)中提供资源?了解更多信息。

  2. 最有可能的是,“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()
于 2021-07-23T23:29:30.107 回答