2013-04-07 15 views
13

Non riesco a importare un file di risorse. Sto usando pyqt4 con Monkey Studio e sto cercando di importare un'immagine png. Quando eseguo il programma ottengo un errore di importazione comePYQT4 - Come faccio a compilare e importare un file qrc nel mio programma?

ImportError: No module named icon_rc

So che devo compilarlo usando pyrcc4, ma non capisco come fare questo può aiutare qualcuno per favore. Sarebbe molto utile avere una risposta che spieghi completamente come compilare il file di risorse in modo da poterlo importare.

risposta

26

cmd aperte (o terminale su * nix) ed eseguire

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

E compilate il file con successo e sono stato in grado di importare il file py nel mio progetto ed eseguirlo senza alcun problema.

+3

E ' potrebbe essere utile sottolineare che l'opzione '-py3' è richiesta solo se si utilizza Python 3.x. Se si utilizza Python 2.x, il file di risorse deve essere compilato senza questo switch aggiuntivo. – 0x8BADF00D

+0

@ 0x8BADF00D [Secondo i documenti] (http://pyqt.sourceforge.net/Docs/PyQt4/resources.html), il flag '-py3' creerà un file compatibile con qualsiasi Python 2.6 o superiore, quindi a meno che tu non stia usando una versione veramente arcaica di Python, dovresti sempre usare '-py3' per la prova futura – jpyams

19

In realtà non c'è molto da spiegare qui, avete un file di risorse (ad esempio icon.qrc), quindi si chiama pyrcc4 -o icon_rc.py icon.qrc che creerà un modulo icon_rc.py che poi si potranno importare nel progetto.

È tutto documentato here.

+0

ho appena non posso convertire questo file qrc in un modulo py. quando uso il codice in cmd pyrcc4 -o icon_rc.py icon.qrc dice pyrcc4: Il file non esiste 'icon.qrc' – Thomas

+0

E, esiste nella directory in cui si sta eseguendo il comando? – mata

+1

ah ok così sono riuscito a compilarlo e importarlo nel mio progetto, ma ora genera un nuovo errore! File "", la linea 89, in file "F: \ calcolo \ Payrollv22 \ icon_rc.py", la linea 300, in qInitResources() file "F: \ calcolo \ Payrollv22 \ ritch_rc.py", linea 295, in qInitResources QtCore.qRegisterResourceData (0x01, str (qt_resource_struct), str (qt_resource_name), str (qt_resource_data)) TypeError: qRegisterResourceData (int, str, str, str): argomento 2 ha tipo inaspettato 'str' – Thomas

1

In Pyqt5 questo comando può essere utilizzato Pyrcc5 input_file.qrc -o Out_file.py

abbiamo bisogno di convertire il file QRC in file di python e quindi possono essere importati al codice

0

si potrebbe provare con PySide così come:

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

+1

pyside è diverso da pyqt4 – eyllanesc

+0

Sì, lo è, ma è solo per un'altra opzione. –

0

relativo perché quando si utilizzava anche pyuic5 per convertire l'interfaccia utente in py, il nome del file di risorse dall'interfaccia utente si blocca.

quindi utilizzare

Pyrcc5 input_file.qrc -o icons.py 

togliere dal main_script.py

import icon_rc 

e utilizzare

import icons 

il momento della chiamata le icone reale dal modulo di icone, si deve guardare il tuo prefisso del file qrc.

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

se il prefisso è ico5 allora si carica le icone con

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

e se il prefisso è, supponiamo,

<RCC> 
    <qresource prefix="icons"> 

allora la sua:

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