Tôi cố gắng phát triển một plugin để thêm các lớp postgis vào qgis từ một plugin như là một phần của việc học python.
Mã để thêm một lớp postgis được lấy từ sách dạy nấu ăn và hoạt động tốt nếu tôi chạy nó từ bảng điều khiển python trong qgis (Nếu nút OK được nhấn trong hộp thoại result == 1 và nên thêm lớp của tôi vào qgis).
Nhưng nếu tôi chạy nó từ plugin của mình, nó sẽ ném thông báo NameError: tên 'QssDataSourceURI' không được xác định. Tại sao tôi gặp lỗi đó khi chạy nó từ plugin?
Có sự khác biệt nào khi tôi thêm một lớp từ plugin / bên trong hàm so với bảng điều khiển python không?
def run(self):
"""Run method that performs all the real work"""
# show the dialog
self.dlg.show()
# Run the dialog event loop
result = self.dlg.exec_()
# See if OK was pressed
if result == 1:
# Do something useful here - delete the line containing pass and
# substitute with your code.
uri = QgsDataSourceURI()
uri.setConnection("localhost", "5432", "test", "postgres", "postgres")
#set database schema, table name, geometry column and optionaly subset(WHERE clause)
uri.setDataSource ("basic", "cities", "geom")
# Defining the layer name and layer type for QGIS?
vlayer=QgsVectorLayer (uri .uri() ,"cities","postgres")