Vấn đề này là do uic
khô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 .ui
có một resources
phầ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 .ui
tậ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 .ui
tệ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 .ui
tập tin hay chạy pyuic4
mỗi lần là lựa chọn của bạn.
No module named resources_napoved_rc
vàpyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
đó là một lỗi đánh máy?