我试图理解别人的代码,他正在使用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)
,而不是绝对路径。
通过这种“相对”路径,我无法获得相同的结果。我可能会出错,或者误解了:/
答案 0 :(得分:3)
前缀“:/”是仅识别Qt元素的虚拟路径,因为它基于Qt Resource System,在C ++中,它的作用是嵌入资源(图像,文件或任何类型的资源)。静态文件)。在python中,也可以推断出这个想法,即使用资源作为源来生成.py。
在C ++中,使用rcc工具,在PyQt5中使用pyrcc5(在PyQt4中使用pyrcc4),在PySide2中,您可以使用pyside2-rcc或rcc。
使用它的步骤很简单:
myresource.qrc
```
<RCC>
<qresource prefix="/">
<file>Logo.png</file>
</qresource>
</RCC>
```
您可以使用pyrcc5(或其他工具)将其转换为.py:
pyrcc5 myresource.qrc -o myresource_rc.py
然后将其导入要使用的文件中:
main.py
# ...
import myresource_rc
# ...
使用它:
app.setWindowIcon(QIcon(':/Logo.png'))