QGISでプラグインを作成する その3
Qtの勉強
この辺が役に立ちましたRkBlog - Introduction to PyQt4
dialogを表示する
前回からの続きになります
QtDesignerで表示するdialogを先に作成しておきます
QtDesignerで"Dialog without Buttons"を選択してformを作成
"Input Widgets"から"Text Edit"を貼り付けます
名前は"textEdit"としておきました
作成したdialogをui_dialog.uiという名前で保存しておき、pythonへコンパイルします
pyuic4 -o ui_dialog.py ui_dialog.ui
出来上がったファイルの中身はこんな感じです
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui_dialog.ui' # # Created: Sat May 21 22:48:18 2011 # by: PyQt4 UI code generator 4.8.3 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("Dialog")) Dialog.resize(300, 71) self.textEdit = QtGui.QTextEdit(Dialog) self.textEdit.setGeometry(QtCore.QRect(10, 10, 281, 51)) self.textEdit.setObjectName(_fromUtf8("textEdit")) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
クラスを1つ挟みます
dialog.pyというファイルを作成します
中身はこんな感じです
QtDesignerで作成したdialogを呼び出しています
# -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui from ui_dialog import Ui_Dialog class Dialog(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.textEdit.setText('test')
plugin.pyの変更
run()にdialog.pyのDialogインスタンス作成を加えます
plugin.py全体としては下記になります
# -*- coding: utf-8 -*- #Import the PyOt and QGIS libraries from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * #Initialize Qt resources from file resources.py import resources_rc class pluginTest: def __init__(self, iface): #Save reference to the QGIS interface self.iface = iface def initGui(self): self.action = QAction(QIcon(":/icon/qgis-icon.png"), "test", self.iface.mainWindow()) QObject.connect(self.action, SIGNAL("triggered()"), self.run) self.iface.addToolBarIcon(self.action) self.iface.addPluginToMenu("test", self.action) def unload(self): self.iface.removePluginMenu("test",self.action) self.iface.removeToolBarIcon(self.action) def run(self): from dialog import Dialog dlg = Dialog() dlg.show() dlg.exec_()