返回pyqt函数QIcon中":filename "的路径。

问题描述 投票:1回答:1

我试着去理解别人的代码,他用的是 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).

我无法用这种 "相对 "路径达到同样的结果。我可能会有其他错误,或者误解了使用 :/

python pyqt
1个回答
2
投票

前缀": "是一个虚拟路径,它只识别Qt的元素,因为它是基于The Qt资源系统在C++中,它所做的是将资源(图像、文件或任何类型的静态文件)嵌入到二进制中。在python中,这个想法也被推断为使用资源作为源生成一个.py。

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

使用它的步骤很简单。

  1. 创建一个.qrc,你可以用Qt Designer来做(查看菜单View-> Resource Browser),虽然格式是一个简单的xml。

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'))
    

请看 PyQt5资源系统

© www.soinside.com 2019 - 2024. All rights reserved.