このセクションではプラグインの開発を容易にするコードスニペットを特集します。
プラグイン内では initGui() に追加:
self.keyAction = QAction("Test Plugin", self.iface.mainWindow())
self.iface.registerMainWindowAction(self.keyAction, "F7") # action1 triggered by F7 key
self.iface.addPluginToMenu("&Test plugins", self.keyAction)
QObject.connect(self.keyAction, SIGNAL("triggered()"),self.keyActionF7)
unload() には右記を追加:
self.iface.unregisterMainWindowAction(self.keyAction)
F7キー押下時に呼び出されるメソッド:
def keyActionF7(self):
QMessageBox.information(self.iface.mainWindow(),"Ok", "You pressed F7")
凡例内のレイヤに直接アクセスするためのメソッドは現在存在しないため、これがレイヤ透過性を使ったレイヤ切り替え方法の回避策です:
def toggleLayer(self, lyrNr):
lyr = self.iface.mapCanvas().layer(lyrNr)
if lyr:
cTran = lyr.getTransparency()
lyr.setTransparency(0 if cTran > 100 else 255)
self.iface.mapCanvas().refresh()
このメソッドにはレイヤ番号(最高0)が必要で、右記から呼び出すことができます:
self.toggleLayer(3)
def changeValue(self, value):
layer = self.iface.activeLayer()
if(layer):
nF = layer.selectedFeatureCount()
if (nF > 0):
layer.startEditing()
ob = layer.selectedFeaturesIds()
b = QVariant(value)
if (nF > 1):
for i in ob:
layer.changeAttributeValue(int(i),1,b) # 1 being the second column
else:
layer.changeAttributeValue(int(ob[0]),1,b) # 1 being the second column
layer.commitChanges()
else:
QMessageBox.critical(self.iface.mainWindow(),"Error", "Please select at \
least one feature from current layer")
else:
QMessageBox.critical(self.iface.mainWindow(),"Error","Please select a layer")
このメソッドにはパラメータがひとつ(選択された機能の属性項目用の新しい値)必要で、右記より呼び出すことができます:
self.changeValue(50)