【问题标题】:PYQT4 - How do I compile and import a qrc file into my program?PYQT4 - 如何编译 qrc 文件并将其导入我的程序?
【发布时间】:2013-03-29 16:31:34
【问题描述】:

我在导入资源文件时遇到问题。我正在将 pyqt4 与猴子工作室一起使用,并且我正在尝试导入 png 图像。当我运行程序时,我收到一个导入错误,例如

ImportError: 没有名为 icon_rc 的模块

我知道我必须使用 pyrcc4 编译它,但我不明白如何做到这一点,任何人都可以帮忙。有一个完全解释如何编译资源文件以便我可以导入它的答案将非常有帮助。

【问题讨论】:

    标签: python pyqt pyqt4 resource-files


    【解决方案1】:

    打开 cmd(或 *nix 上的终端)并运行

    pyrcc4 -py3 F:\computing\Payrollv22\icon.qrc -o icon_rc.py
    

    它成功编译了文件,我能够将py文件导入我的项目并运行它没有问题。

    【讨论】:

    • 值得指出的是,只有在使用 Python 3.x 时才需要 -py3 开关。如果您使用的是 Python 2.x,则需要编译资源文件而无需此额外开关。
    • @0x8BADF00D According to the docs-py3 标志将生成与任何 Python 2.6 或更高版本兼容的文件,因此除非您使用的是真正过时的 Python 版本,否则您应该始终使用-py3 面向未来
    【解决方案2】:

    这里真的没什么好解释的,你有一个资源文件(例如icon.qrc),然后你调用pyrcc4 -o icon_rc.py icon.qrc,它将创建一个模块icon_rc.py,然后你可以将它导入到你的项目中。

    都记录在案here

    【讨论】:

    • 我只是无法将此 qrc 文件转换为 py 模块。当我在 cmd pyrcc4 -o icon_rc.py icon.qrc 中使用代码时,它说 pyrcc4: File does not exist 'icon.qrc'
    • 而且,它是否存在于您运行命令的目录中?
    • 啊,好吧,所以我设法编译它并将其导入到我的项目中,但它现在引发了一个新错误!文件“”,第 89 行,在 文件“F:\computing\Payrollv22\icon_rc.py”,第 300 行,在 qInitResources() 文件“F:\computing\Payrollv22\ritch_rc.py ",第 295 行,在 qInitResources QtCore.qRegisterResourceData(0x01, str(qt_resource_struct), str(qt_resource_name), str(qt_resource_data)) TypeError: qRegisterResourceData(int, str, str, str): argument 2 has unexpected type 'str'
    【解决方案3】:

    在 Pyqt5 中可以使用该命令Pyrcc5 input_file.qrc -o Out_file.py

    我们需要将该 qrc 文件转换成 python 文件,然后才能将其导入到您的代码中

    【讨论】:

      【解决方案4】:

      这是因为当您还使用 pyuic5 将 UI 转换为 py 时,UI 中的资源文件名仍然存在。

      然后使用

      Pyrcc5 input_file.qrc -o icons.py
      

      从 main_script.py 中删除

      import icon_rc
      

      并使用

      import icons
      

      从图标模块调用实际图标时,您必须查看您的 qrc 文件前缀。

      < RCC >
          < qresource
          prefix = "ico5" >
          < file > plugin.png < / file >
          < / qresource >
      < / RCC >
      

      如果前缀是 ico5 然后你用

      加载图标
       QtGui.QIcon(":/ico5/plugin.png")
      

      如果前缀是 ,可以说,

      <RCC>
          <qresource prefix="icons">
      

      然后它的:

        QtGui.QIcon(":/icons/plugin.png")
      

      【讨论】:

        【解决方案5】:

        您也可以尝试使用 pyside:

        --- pyside-rcc -o input.qrc output.py

        【讨论】:

        • pyside 与 pyqt4 不同
        • 是的,但这只是另一种选择。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        相关资源
        最近更新 更多