代码之家  ›  专栏  ›  技术社区  ›  Aadit

如何恢复资源。来自resources\u rc的qrc文件。py公司

  •  1
  • Aadit  · 技术社区  · 7 年前

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

    问题是何时需要编辑 .ui 文件,我有一个损坏的 资源qrc 文件我的 resources_rc.py 文件一切正常,我通过以下命令创建了该文件:

    pyrcc4 -o resource.py resource.qrc
    

    那么我有没有办法 资源qrc 资源\u rc。py公司 文件

    1 回复  |  直到 7 年前
        1
  •  1
  •   ekhumoro    7 年前

    下面的脚本将从 resources_rc.py 文件生成人 pyrcc . 它将与PyQt4/5和Python 2/3一起使用。这些文件将写入与给定 资源\u rc。py公司 文件

    用法:

    python qrc_gen.py path/to/resources_rc.py
    

    qrc\U gen.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>\n' % path.lstrip(':/'))
    
    with open(os.path.join(tmpdir, 'resources.qrc'), 'w') as stream:
        stream.write('<!DOCTYPE RCC><RCC version="1.0">\n')
        stream.write('<qresource>\n%s</qresource>\n' % ''.join(files))
    
    推荐文章