我试图理解别人的代码,他正在使用QIcon
函数来设置WindowIcon。因为我之前使用过 QIcon
,所以我在我的程序中使用了一个绝对路径,如下所示:
...
app = QApplication([])
app.setWindowIcon(QIcon('.\\MyApp\\data\\Logo.png'))
start_window = StartWindow()
start_window.show()
app.exit(app.exec_())
...
在他的代码中,他使用实用函数调用QIcon
来更改文件名。但他调用的不是绝对路径,而是 QIcon(':/' + filename)
。
我无法通过这种“相对”路径获得相同的结果。我可能会弄错或误解 :/
最佳答案
前缀“:/”是一个虚拟路径,只识别Qt的元素,因为它是基于Qt Resource System的。 ,在 C++ 中,它所做的是将资源(图像、文件或任何类型的静态文件)嵌入到二进制文件中。在 python 中,这个想法也被推断为使用资源作为源生成一个 .py。
在 C++ 中使用 rcc 工具,在 PyQt5 中使用 pyrcc5(在 PyQt4 中使用 pyrcc4),在 PySide2 中你可以使用 pyside2-rcc 或 rcc。
使用步骤很简单:
- 创建一个 .qrc,尽管格式是简单的 xml,但您可以使用 Qt Designer 执行此操作(检查菜单 View -> 资源浏览器)。
myresource.qrc
```
<RCC>
<qresource prefix="/">
<file>Logo.png</file>
</qresource>
</RCC>
```
您使用 pyrcc5(或其他工具)将其转换为 .py:
pyrcc5 myresource.qrc -o myresource_rc.py
然后将其导入到要使用它的文件中:
主.py
# ... import myresource_rc # ...
使用它:
app.setWindowIcon(QIcon(':/Logo.png'))
关于python - pyqt函数QIcon中返回 ":/filename"的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62264910/