Questo problema è causato dal uic
mancato funzionamento corretto. Non sono sicuro del perché, ma posso mostrare i sintomi e una soluzione alternativa.
Il .ui
file del plugin iniziale ha un resources
elemento vuoto :
<resources/>
Quando modifichi le risorse per il plugin in QtDesigner, questo cambia in:
<resources>
<include location="resources.qrc"/>
</resources>
Questa è la fonte del problema. Se si modifica il file .qrc in quel tag di inclusione,resourcesXXX.qrc
l'errore cambierà in No module named resourcesXXX_rc
.
Nota: quanto segue si basa su una compilazione di plug-in con 'test' inserito in tutti i campi del generatore di plug-in QGIS.
Nel file test_dialog.py le seguenti righe compilano il file .ui :
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
Questo è dove si verifica l'errore.
Modifica il tuo .ui
file per tornare a <resources/>
e il problema è stato risolto. Fino a quando non modifichi nuovamente la finestra di dialogo in QtDesigner. È necessario apportare questa modifica al .ui
file dopo ogni modifica della finestra di dialogo.
La soluzione a questo è di cambiare il tuo plugin in modo che funzioni come funzionavano le versioni precedenti del plugin. Ciò comporta la sostituzione della chiamata uic e delle linee di classe nel file _dialog.py . Sostituisci queste righe:
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
class testDialog(QtGui.QDialog, FORM_CLASS):
con:
from test_dialog_base import Ui_testDialogBase
class testDialog(QDockWidget, Ui_testDialogBase):
Ora dovrai correre
pyuic4 -x test_dialog_base.ui > test_dialog_base.py
quando si crea il plug-in per la prima volta e ogni volta si modifica la finestra di dialogo del plug-in con QtDesigner. Questo era il vecchio metodo di plugin.
È possibile scegliere se modificare il .ui
file o eseguire pyuic4
ogni volta.
No module named resources_napoved_rc
epyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
o è un errore di battitura?