pyqt函数QIcon中“:/ filename”路径的返回

时间:2020-06-08 14:55:10

标签: python pyqt

我试图理解别人的代码,他正在使用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),而不是绝对路径。

通过这种“相对”路径,我无法获得相同的结果。我可能会出错,或者误解了:/

的使用

1 个答案:

答案 0 :(得分:3)

前缀“:/”是仅识别Qt元素的虚拟路径,因为它基于Qt Resource System,在C ++中,它的作用是嵌入资源(图像,文件或任何类型的资源)。静态文件)。在python中,也可以推断出这个想法,即使用资源作为源来生成.py。

在C ++中,使用rcc工具,在PyQt5中使用pyrcc5(在PyQt4中使用pyrcc4),在PySide2中,您可以使用pyside2-rcc或rcc。

使用它的步骤很简单:

  1. 创建一个.qrc,尽管格式是简单的xml,也可以使用Qt Designer进行操作(请查看菜单View-> Resource Browser)。

myresource.qrc

```
<RCC>
  <qresource prefix="/">
    <file>Logo.png</file>
  </qresource>
</RCC>
```
  1. 您可以使用pyrcc5(或其他工具)将其转换为.py:

    pyrcc5 myresource.qrc -o myresource_rc.py
    
  2. 然后将其导入要使用的文件中:

    main.py

    # ...
    import myresource_rc
    # ...
    
  3. 使用它:

    app.setWindowIcon(QIcon(':/Logo.png'))
    

请参见The PyQt5 Resource System