Este problema se debe a uic
no funciona correctamente. No sé exactamente por qué, pero puedo mostrar los síntomas y una solución.
El plugin inicial .ui
tiene un resources
elemento:
<resources/>
Al editar los recursos para el plugin en QtDesigner esto cambia a:
<resources>
<include location="resources.qrc"/>
</resources>
Este es el origen del problema. Si cambia el archivo .qrc en ese incluir etiqueta a resourcesXXX.qrc
el error cambiará a No module named resourcesXXX_rc
.
Nota: lo que sigue se basa en la construcción de un plugin con 'test' introducido en todos los campos del constructor de plugins de QGIS.
En el test_dialog.py las siguientes líneas compilan el archivo .ui archivo:
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
Aquí es donde se produce el error.
Edita tu .ui
para volver a cambiar a <resources/>
y el problema queda resuelto. Hasta vuelves a editar tu diálogo en QtDesigner. Debe realizar esta edición en el archivo .ui
después de cada edición.
La solución es cambiar el plugin para que funcione como las versiones anteriores. Esto implica la sustitución de la uic y las líneas de clase en diálogo.py archivo. Sustituya estas líneas:
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):
Ahora tendrá que ejecutar
pyuic4 -x test_dialog_base.ui > test_dialog_base.py
cuando cree su plugin por primera vez y cada vez que edite el diálogo de su plugin con QtDesigner. Este era el antiguo método de plugins.
Si se edita el .ui
o la ejecución pyuic4
cada vez es su elección.