Veel

Salvestage klassi funktsiooni atribuut QGIS-i pistikprogrammis

Salvestage klassi funktsiooni atribuut QGIS-i pistikprogrammis


Olen pythoni ja pyqgise jaoks üsna uus, nii et küsimus on üsna tühine ...

Kirjutan pistikprogrammi ja ühes skriptis on mul klass ja mõned sisefunktsioonid ...

... klass CreateModelDialog (QDialog, FORM_CLASS): def __init __ (ise, iface): QDialog .__ init __ (ise) ... def openSr (ise): projSelector = QgsGenericProjectionSelector () projSelector.exec_ () self.srText.setText ))

Siis pean kasutama viimast rida (see on valitud ja kuvatud EPSG-i pakkuminesrTekstQT-i dialoogi QLineEdit sama skripti teises funktsioonis:

def createModel (ise): modelName = self.bxDBname.text () modelType = self.cmbBxModelType.currentText () crs = self.srText.setText (projSelector.selectedAuthId ()) createModel (modelName, modelType, crs)

Kuid saan vea:

NameError: globaalne nimi 'projSelector' pole määratletud

Olen kindel, et see on tingitud asjaolust, etprojSelectoron muutuja, mis eksisteerib ainult lokaalisavatud Srfunktsioon.

Seega on küsimus: kuidas peaksin funktsiooni muutma, et muutujat oleks võimalik välja kutsuda?


Funktsiooniga saate luua eksemplari vairiabeleid ise märksõna:

def openSr (ise): self.projSelector = QgsGenericProjectionSelector () self.projSelector.exec_ () self.srText.setText (self.projSelector.selectedAuthId ())

Nüüd on muutuja self.projSelector valmis kasutamiseks teistes meetodites.

dialoog = CreateModelDialog (iface)… dialog.projSelector

Tagastab selle objektiga teie muutuja.


Vaata videot: QGIS - Create New Shapefile