python - pyqt函数QIcon中返回 ":/filename"的路径

标签 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)

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

的使用

最佳答案

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

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

使用步骤很简单:

  1. 创建一个 .qrc,尽管格式是简单的 xml,但您可以使用 Qt Designer 执行此操作(检查菜单 View -> 资源浏览器)。

myresource.qrc

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

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

    主.py

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

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

参见 The PyQt5 Resource System

关于python - pyqt函数QIcon中返回 ":/filename"的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62264910/

相关文章:

python - 具有 3D 向量的两个 numpy 数组的点积

python - 如何使用 setup.py 和 extra_requires 指定可选依赖项?

pyqt - 是否有可能自动将 QVariants 转换为 Python 对象?

python - 如何将 requests.cookiejar 转换为 qnetworkcookiejar?

python - 为什么在 tensorflow 中使用多 GPU 时 GPU 内存使用情况有很大不同?

python - 比较没有 SVM 的 HOG 特征向量

python - 如何在 PyQt/PySide 中将数据设置为 QComboBox?

python - pyqt4鼠标释放事件未触发

Python/ Pandas : How to consolidate repeated rows with NaN in different columns?

python - 在 pyqt 中使用复选框