Я новый ученик для этого плагина вещь вещь. У меня есть проблема в назначении слоя в качестве активного слоя. Я пытаюсь использовать этот метод кода self.Iface, но в результате появляется ошибка «У объекта AttributeError:« Prototypev1Dialog »нет атрибута« iface »».
Для примера кодирования, приведенного ниже, появляется ошибка «NameError: name»'qgis' не определено "
import os
from PyQt5 import uic
from PyQt5 import QtWidgets
from qgis.core import *
from qgis.core import QgsProject
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'Prototype_dialog_base.ui'))
class Prototypev1Dialog(QtWidgets.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(Prototypev1Dialog, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.openVector)
self.pushButton_2.clicked.connect(self.SaveSelection)
self.pushButton_3.clicked.connect(self.openSel)
def openVector(self):
dirlayer = QgsVectorLayer('C:/Users/PC/Desktop/Data Qgis/OSM/gis_osm_places_free_1.shp', 'test', 'ogr')
QgsProject.instance().addMapLayer(dirlayer)
def SaveSelection(self):
#curlayer = qgis.utils.iface.activeLayer()
curlayer = self.iface.activeLayer()
_writer = QgsVectorFileWriter.writeAsVectorFormat(curlayer, 'C:/Users/PC/Desktop/Extract/testExtract.shp', "UTF-8",
curlayer.crs(), "ESRI Shapefile", onlySelected=True)
def openSel(self):
sellayer = QgsVectorLayer('C:/Users/PC/Desktop/Extract/testExtract.shp', 'extract', 'ogr')
QgsProject.instance().addMapLayer(sellayer)