Dieses Problem wird dadurch verursacht, dass es uic
nicht richtig funktioniert. Ich weiß nicht genau warum, aber ich kann die Symptome und eine Problemumgehung zeigen.
Die anfängliche Plugin- .ui
Datei enthält ein leeres resources
Element:
<resources/>
Wenn Sie die Ressourcen für das Plugin in QtDesigner bearbeiten, ändert sich dies zu:
<resources>
<include location="resources.qrc"/>
</resources>
Dies ist die Ursache des Problems. Wenn Sie die .qrc-Datei in diesem Include- Tag resourcesXXX.qrc
ändern, ändert sich der Fehler in No module named resourcesXXX_rc
.
Hinweis: Das Folgende basiert auf einem Plugin-Build, bei dem 'test' in alle Felder des QGIS-Plugin-Builders eingegeben wurde.
In der Datei test_dialog.py kompilieren die folgenden Zeilen die .ui- Datei:
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
Hier tritt der Fehler auf.
Bearbeiten Sie Ihre .ui
Datei, um wieder zu wechseln, <resources/>
und das Problem ist behoben. Bis Sie Ihren Dialog in QtDesigner erneut bearbeiten. Sie müssen diese Änderung an der .ui
Datei nach jedem Bearbeiten Ihres Dialogfelds vornehmen .
Die Lösung hierfür besteht darin, Ihr Plugin so zu ändern, dass es wie frühere Versionen des Plugins funktioniert. Dies beinhaltet das Ersetzen des uic- Aufrufs und der Klassenzeilen in der Datei _dialog.py . Ersetzen Sie diese Zeilen:
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
class testDialog(QtGui.QDialog, FORM_CLASS):
mit:
from test_dialog_base import Ui_testDialogBase
class testDialog(QDockWidget, Ui_testDialogBase):
Sie müssen jetzt laufen
pyuic4 -x test_dialog_base.ui > test_dialog_base.py
Wenn Sie Ihr Plugin zum ersten Mal erstellen und jedes Mal, wenn Sie Ihren Plugin-Dialog mit QtDesigner bearbeiten. Dies war die alte Plugin-Methode.
Sie haben die Wahl, ob Sie die .ui
Datei oder den Lauf pyuic4
jedes Mal bearbeiten möchten.
No module named resources_napoved_rc
undpyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
oder ist es ein Tippfehler?