2.3. main.py¶
開始プログラムから呼び出しているプログラムです。
さんぷる1メニューがクリックされたら、シェイプファイルを選択するダイアログが開いて、 ベクタレイヤに追加して、画面に表示するようにしてみました。
# -*- coding: utf-8 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * # リソース読み込み try: from . import resource except ImportError: pass # メインクラス class main: # Pythonのクラスを作ったら(多分)必ず要るやつ def __init__(self, iface): self.iface = iface # QGISのメニューに表示するときに呼ばれるやつ def initGui(self): # 小メニューを作る self.action = QAction(QIcon(":/icon/marubatu32.png"), u"さんぷる1", self.iface.mainWindow()) self.action.setObjectName("sample1") # 大メニューを作る self.menu = QMenu(self.iface.mainWindow()) self.menu.setObjectName("daradara") self.menu.setTitle(u"だら$") self.menu.addAction(self.action) # 大メニューをメニューバーに挿入する menuBar = self.iface.mainWindow().menuBar() menuBar.insertMenu(self.iface.firstRightStandardMenu().menuAction(), self.menu) # 小メニューを押したとき実行するよう、トリガーをセット QObject.connect(self.action, SIGNAL("triggered()"), self.run) # メニューを無効にしたときに呼ばれるやつ # (ここは、まだ未完成。ちゃんと消せてなくて、変な情報が残ってるみたい。わかったら修正する) def unload(self): #メニューを消す self.menu.deleteLater() # メニューでクリックした時、実行されるやつ。処理本体。 def run(self): # ファイル選択ダイアログを表示 fil = QFileDialog.getOpenFileName(None, "Open Shapefile", ".", "Shapefiles (*.shp)") filInfo = QFileInfo(fil) # レイヤ追加 self.iface.addVectorLayer(fil, filInfo.fileName(), "ogr")