PyQgisを使用して属性テーブルを開いていますか?


11

PythonコンソールまたはQGISのPythonスクリプトから属性テーブルを開くことはできますか?

回答:


12

はい、できます。少なくとも最新のマスターバージョンと1.8では可能です。それはあるのifaceを経て公開されたメソッド

// C++ (signature)
void showAttributeTable (QgsVectorLayer *l)

# PyQGIS (example)
iface.showAttributeTable(iface.activeLayer())

QgsVectorLayerへの既存の参照が必要になります。

フィーチャーを直接編集する場合は、ifaceを介して公開されるメソッドでもあります。

// C++ (signature)
bool openFeatureForm (QgsVectorLayer *l, QgsFeature &f, bool updateFeatureOnly=false)

# PyQGIS (example)
iface.openFeatureForm(iface.activeLayer(), feature, False)

どちらの場合も、QgsVectorLayerとQgsFeatureへの既存の参照が必要です。開かれたフィーチャフォームと編集可能かどうかは、アプリの設定と、フィーチャのレイヤーが編集モードかどうかによって異なります。


Pythonの例は、Pythonコンソールでうまく動作しました。ただし、このスクリプトをProcessingで実行しようとしました。ここでは、読み込まれたレイヤーのlayer = processing.getObject()です。iface.showAttributeTable(layer)から、名前エラーが発生しました:グローバル名 'iface'が定義されていません。助言がありますか?
user25976 14

@dakcarto「from qgis.utils import iface」でifaceをインポートする必要があります
Mr Purple

@ user25976への参照ifaceは、Processingなどのプラグインを含め、QGIS内から実行されるコンソールまたはスクリプトに対してのみ機能します。コンソールの場合、便宜上自動インポートされますが、他のすべてのケースではが必要importですqgis.utils。これについては、PyQGISクックブックの冒頭で説明しています。ifacePythonモジュールはQGISデスクトップGUIアプリケーションをインスタンス化しないため、スタンドアロンアプリではアクセスできません。
dakcarto 2014年

1
@dakcarto iface.openFeatureForm(iface.activeLayer()、feature、False)これは、選択した機能を編集する場合に便利ですが、新しい機能を追加する場合はどうすればよいですか?機能なし
user99
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.