我试着去理解别人的代码,他用的是 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的元素,因为它是基于The Qt资源系统在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'))
请看 PyQt5资源系统