在 raspbian (Raspberry Pi OS) 中找不到 PyQt 应用程序 rcc 转换的图像

问题描述

我正在开发一个可以在 Windows 和 Linux(在我的例子中是 Raspbian)上运行的跨平台应用程序。我已经使用 C:\python37\Scripts\pyside2-rcc.exe tests.qrc -o tests_rc.py 转换了单个文件中的所有图像。我的 tests.qrc 文件结构是这样的:

<RCC>
  <qresource prefix="images">
    <file>images/Slider_1m.png</file>
    <file>images/Slider_2m.png</file>
    <file>images/Slider_3m.png</file>
  </qresource>
</RCC>

在主脚本中转换为 tests_rc.py 后:

self.SLIDER.setText(QCoreApplication.translate("SLIDER",u"<html><head/><body><p align=\"center\"><img src=':/images/images/Slider_1m.png'/></p></body></html>",None))

完美加载在 Windows 应用程序中,不再需要原始图像文件。 但是在 raspbian 中,这种图像不会加载,我必须像这样定义位置:

self.SLIDER.setText(QCoreApplication.translate("SLIDER",u"<html><head/><body><p align=\"center\"><img src='/home/pi/Myproject/ui/images/Slider_1m.png'/></p></body></html>",None))

如您所见,我设置了确切的图像位置。这是我在 raspbian 应用程序中发现的查看方式,而我的 tests_rc.py 文件完全没用。在 raspbian 中像 windows 一样使用 tests_rc.py 文件应该怎么做?

解决方法

我有 mainicons.qrc 文件包含:

<RCC>
  <qresource prefix="images">
    <file>images/calibration_.png</file>
    <file>images/media_.png</file>
    <file>images/menu_.png</file>
    <file>images/upgrade_.png</file>
  </qresource>
</RCC>

转换为 mainicons_rc.py 文件,然后导入到这个简单的例子中:

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel
from PyQt5.QtCore import QCoreApplication

import mainicons_rc

def window():
   app = QApplication(sys.argv)
   widget = QWidget()
   textLabel = QLabel(widget)
   textLabel.setText(QCoreApplication.translate("TestInitWindow",u"<html><head/><body><p><img src=\":/images/images/calibration_.png\"/></p></body></html>",None))

   widget.setGeometry(50,50,300,300)
   widget.setWindowTitle("PyQt5 Example")
   widget.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

问题是:曾经是我使用 C:\Python37\Scripts\pyside2-rcc.exe mainicons.qrc -o mainicons_rc.py 将其转换为 rcc 资源文件。 将 pyside-rcc.exe 更改为 pyrcc5.exe 解决了这个问题,现在转换命令应该是:C:\Python37\Scripts\pyrcc5.exe mainicons.qrc -o mainicons_rc.py。 我检查过两个生成文件完全不同。