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)
對方當我通過maked插件「插件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)
然後當我嘗試使用插件:
IndexError: list index out of range
爲什麼在控制檯它工作,但不能在插件工作?