Vấn đề này là do uickhông hoạt động đúng. Tôi không chắc chắn chính xác tại sao nhưng tôi có thể hiển thị các triệu chứng và cách giải quyết.
Tệp plugin ban đầu .uicó một resourcesphần tử trống :
<resources/>
Khi bạn chỉnh sửa tài nguyên cho plugin trong QtDesigner, điều này sẽ thay đổi thành:
<resources>
<include location="resources.qrc"/>
</resources>
Đây là nguồn gốc của vấn đề. Nếu bạn thay đổi tệp .qrc trong thẻ bao gồmresourcesXXX.qrc lỗi thì lỗi sẽ thay đổi thành No module named resourcesXXX_rc.
Lưu ý: những điều sau đây dựa trên việc xây dựng plugin với 'test' được nhập vào tất cả các trường của trình tạo plugin QGIS.
Trong tệp test_dialog.py , các dòng sau sẽ biên dịch tệp .ui :
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
Đây là nơi xảy ra lỗi.
Chỉnh sửa .uitập tin của bạn để thay đổi trở lại <resources/>và vấn đề được giải quyết. Cho đến khi bạn chỉnh sửa hộp thoại của mình trong QtDesigner một lần nữa. Bạn phải thực hiện chỉnh sửa này thành .uitệp sau mỗi lần bạn chỉnh sửa hộp thoại của mình.
Giải pháp cho vấn đề này là thay đổi plugin của bạn để hoạt động như các phiên bản trước đó của plugin đã hoạt động. Điều này liên quan đến việc thay thế cuộc gọi uic và các dòng lớp trong tệp _dialog.py . Thay thế các dòng này:
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'test_dialog_base.ui'))
class testDialog(QtGui.QDialog, FORM_CLASS):
với:
from test_dialog_base import Ui_testDialogBase
class testDialog(QDockWidget, Ui_testDialogBase):
Bây giờ bạn sẽ phải chạy
pyuic4 -x test_dialog_base.ui > test_dialog_base.py
khi bạn lần đầu tiên tạo plugin và mỗi lần bạn chỉnh sửa hộp thoại plugin bằng QtDesigner. Đây là phương pháp plugin cũ.
Cho dù chỉnh sửa .uitập tin hay chạy pyuic4mỗi lần là lựa chọn của bạn.
No module named resources_napoved_rcvàpyrcc4 -o resources_napoved_rc.py resources_napoved.qrcđó là một lỗi đánh máy?