如何从resources_rc.py恢复resource.qrc文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从resources_rc.py恢复resource.qrc文件相关的知识,希望对你有一定的参考价值。

当我面临数据丢失时,我有一个损坏的resource.qrc文件,当我尝试恢复它,我也丢失了我的图形文件(.png,.jpg) - 但我的Qt应用程序运行正常。

问题是当我需要编辑.ui文件时,我有一个损坏的resource.qrc文件。我的resources_rc.py文件很好,我通过以下命令创建:

pyrcc4 -o resource.py resource.qrc

那么有什么方法可以让我的resource.qrcresources_rc.py文件中恢复?

答案

下面的脚本将重建qrc文件和resources_rc.py生成的pyrcc文件中的所有原始资源。它适用于PyQt4 / 5和Python 2/3。这些文件将写入与给定resources_rc.py文件相同的目录中的临时目录。

用法:

python qrc_gen.py path/to/resources_rc.py

却如此_跟.朋友:

import sys, os, tempfile
import sip
sip.setapi('QString', 2)
from PyQt4 import QtCore
# from PyQt5 import QtCore

respath = os.path.abspath(sys.argv[1])
dirpath = os.path.dirname(respath)
sys.path.insert(0, dirpath)

import resources_rc

tmpdir = tempfile.mkdtemp(prefix='qrc_', dir=dirpath)

it = QtCore.QDirIterator(':', QtCore.QDirIterator.Subdirectories)

files = []

while it.hasNext():
    uri = it.next()
    path = uri.lstrip(':/')
    if path.startswith('qt-project.org'):
        continue
    tmp = os.path.join(tmpdir, path)
    if it.fileInfo().isDir():
        try:
            os.makedirs(tmp)
        except OSError:
            pass
    else:
        res = QtCore.QFile(uri)
        res.open(QtCore.QIODevice.ReadOnly)
        with open(tmp, 'wb') as stream:
            stream.write(bytes(res.readAll()))
        res.close()
        files.append('    <file>%s</file>
' % path.lstrip(':/'))

with open(os.path.join(tmpdir, 'resources.qrc'), 'w') as stream:
    stream.write('<!DOCTYPE RCC><RCC version="1.0">
')
    stream.write('<qresource>
%s</qresource>
' % ''.join(files))

以上是关于如何从resources_rc.py恢复resource.qrc文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Spring Cloud Gateway 的 GlobalFilter 中的 SecurityContext 获取 BearerTokenAuthentication

pandas如何设置索引从0开始,pandas如何恢复默认索引,DataFrame如何恢复隐式索引

如何从文件中恢复 RSA?

如何从备份集中恢复归档日志

如何检查 Fragment 是不是从后台恢复?

如何从 C# 恢复数据库