1
私はqgisでプラグインを作成しようとしましたが、問題があります。Qgis:IndexError:リストのインデックスが範囲外になっています
def Style_for_layer():
layer = qgis.utils.iface.legendInterface().layers()[0]
if layer.type() == QgsMapLayer.VectorLayer and layer.geometryType() == QGis.Point and layer.name() in ["one","two"]:
layer.loadNamedStyle('C:/Users/user/Desktop/style_one.qml')
elif layer.type() == QgsMapLayer.VectorLayer and layer.geometryType() == QGis.Line and layer.name() == "some name layer":
layer.loadNamedStyle('C:/Users/user/Desktop/style_two.qml')
else:
pass
legend = qgis.utils.iface.legendInterface()
legend.itemAdded.connect(Style_for_layer)
反対側を、私は「プラグインbuildier」これは動作しないことにより、プラグインを集約したときに:私が使用プラグインをしようとすると、その後
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:
layer = qgis.utils.iface.legendInterface().layers()[0]
if layer.type() == QgsMapLayer.VectorLayer and layer.geometryType() == QGis.Point and layer.name() in ["one","two"]:
layer.loadNamedStyle('C:/Users/user/Desktop/style_one.qml')
elif layer.type() == QgsMapLayer.VectorLayer and layer.geometryType() == QGis.Line and layer.name() == "some name layer":
layer.loadNamedStyle('C:/Users/user/Desktop/style_two.qml')
else:
pass
legend = qgis.utils.iface.legendInterface()
legend.itemAdded.connect(run)
私は下のpythonコンソールにコードを置くのプラグインこの作品 :
IndexError: list index out of range
コンソールでは動作しますが、プラグインでは機能しないのはなぜですか?