Các plugin bị lỗi với không có mô-đun có tên qssprojectionselectionwidget trong Windows?


8

Plugin PythonISIS của tôi hoạt động trên Ubuntu (ít nhất là đối với tôi và tất cả các lỗi nghiêm trọng được báo cáo cho đến nay đều được giải quyết), nhưng khi tôi chạy nó trên QGIS được cài đặt từ trình cài đặt 2.10.1 64 bit chính thức cho Windows (trên Windows 7 64- bit), tôi không thể cài đặt nó do lỗi sau:

This plugin is broken
No module named qgsprojectionselectionwidget

Một người dùng khác đã báo cáo vấn đề này là tốt. nhưng với một thông báo lỗi khác (tôi không biết anh ta có hệ điều hành và kiến ​​trúc nào, nhưng tôi đoán Windows và 64-bit EDIT: Tôi đoán sai, anh ta có Mac OS X):

This plugin is broken
No module named qgsmaplayercombobox

Cả hai đều đề cập đến các widget ở dạng GUI, mà tôi đã xây dựng thông qua Qt Designer trong Ubuntu. Qt Designer cũng được đóng gói với trình cài đặt QGIS cho Windows và tuyên bố có chứa các widget tùy chỉnh QGIS tương tự, vì vậy vấn đề không nên ở những widget đó bị thiếu và QGIS sẽ nhận ra chúng - nhưng không phải vậy.

Vậy làm thế nào để khắc phục nó? Plugin của tôi vẫn đang thử nghiệm, vì vậy tôi chỉ có thể thêm "xin lỗi, không hoạt động trong Windows" vào siêu dữ liệu, nhưng đó không phải là một giải pháp thực sự.

EDIT: hành vi tương tự được xác nhận trên phiên bản 32 bit.

Bây giờ tôi tìm thấy một gợi ý tốt trong nhận xét cho câu trả lời này : sử dụng os.path.joinđể làm cho các đường dẫn đa nền tảng. Điều này là dễ dàng đối với một vài con đường được mã hóa cứng mà tôi có, nhưng các lỗi dường như cho thấy vấn đề sâu hơn, thậm chí có thể trong Qt. Làm cách nào tôi có thể xử lý vấn đề này trong plugin của mình mà không cần chỉnh sửa gì khác?

Câu trả lời:


22

Có lẽ QGIS của bạn đang cố gắng nhập widget của bạn từ tệp .h như trong c ++.

Vui lòng mở tệp .ui của bạn và tìm dòng:

<customwidget>
   <class>QgsProjectionSelectionWidget</class>
   <extends>QWidget</extends>
   <header>qgsprojectionselectionwidget.h</header>
  </customwidget>

Sau đó, trong thẻ tiêu đề của bạn thay đổi thành:

<customwidget>
   <class>QgsProjectionSelectionWidget</class>
   <extends>QWidget</extends>
   <header>qgis.gui</header>
  </customwidget>

Thay đổi cùng một thẻ cho tất cả các widget của bạn có lỗi (qgsmaplayercombobox, v.v.).


0

Câu trả lời của @ dmh126 là tốt. Đặc biệt, nếu bạn đang làm việc với pyqt - pyqgis, bạn nên viết from qgis._gui import *thay vì import QgsProjectionSelectionWidget.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.