1 . Gunakan pembuat Plugin untuk membuat plugin baru
File yang dibuat ditunjukkan pada gambar berikut
2 . Konversikan file sumber daya ( resources.qrc ) menjadi file Python ( resources.py ) menggunakan OSGeo4W Shell
pyrcc4 -o resources_rc.py resources.qrc
Setelah itu, jika Anda melihat ke dalam folder plugin , Anda akan melihat file .py baru , file resources.py yang baru saja dibuat. Plugin sekarang dapat diinstal dan dibuka melalui menu QGIS utama> Kelola dan instal Plugin.
3 . CARA MEMBUAT TOOLBAR DAN ALAT (tombol) DAN TAMBAHKAN ALAT-ALAT DI TOOLBAR
Buka dengan editor file my_toolbar.py dan di bagian initGui (self) tulis:
def initGui(self):
self.toolBar = self.iface.addToolBar("MY TOOLBAR tools")
self.toolBar.setObjectName("MY TOOLBAR tools")
self.act1 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool1"), self.iface.mainWindow())
self.act2 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool2"), self.iface.mainWindow())
self.act3 = QAction(QIcon(":/plugins/Myplugintoolbar/icon.png"), QCoreApplication.translate("IMPRESStoolbar", "Tool3"), self.iface.mainWindow())
Dengan cara ini tiga tombol / alat telah dibuat.
Agar tombol muncul di bilah alat, lanjutkan menulis yang berikut:
self.toolBar.addAction(self.act1)
self.toolBar.addAction(self.act2)
self.toolBar.addAction(self.act3)
Agar tombol ketika diklik untuk membuka gui lanjutkan menulis yang berikut ini:
QObject.connect(self.act1, SIGNAL("triggered()"), self.runtool1)
QObject.connect(self.act2, SIGNAL("triggered()"), self.runtool2)
QObject.connect(self.act3, SIGNAL("triggered()"), self.runtool3)
Metode runtool1 , runtool2 dan runtool3 didefinisikan kemudian sebagai berikut untuk membuka gui yang berbeda untuk setiap tombol
def runtool1(self):
self.dlgtool1.show()
def runtool2(self):
self.dlgtool2.show()
def runtool3(self):
self.dlgtool3.show()
Dengan begitu ketika tombol tool1 diklik, gui dlgtool1 akan terbuka, ketika tombol tool2 diklik, dlgtool2 akan terbuka dan ketika tombol tool3 diklik, gui dlgtool3 akan terbuka.
dlgtool1 , dlgtool2 dan dlgtool3 harus menjadi variabel yang menunjuk ke file ui yang mewakili dialog .
Jadi dialognya harus:
dibuat ,
diimpor ke file py utama ( my_toolbar.py ) dan
ditugaskan ke variabel ( dlgtool1 , dlgtool2 dan dlgtool3 ) untuk mendapatkan turunan dari mereka.
Untuk membuat dialog :
- Salin file my_toolbar_dialog.py dan my_toolbar_dialog_base.ui
dan rekatkan di dalam folder lain sehingga Anda dapat mengganti nama. Lakukan ini sebanyak yang diperlukan, untuk contoh ini tiga kali.
Kemudian salin file-file baru ini dan rekatkan kembali ke folder Myplugintoolbar
Buka Form_dlgtool1_dialog.py dengan editor untuk menerapkan modifikasi berikut:
Dari :
import os
from PyQt4 import QtGui, uic
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'my_toolbar_dialog_base.ui'))
class MyplugintoolbarDialog(QtGui.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(MyplugintoolbarDialog, self).__init__(parent)
self.setupUi(self)
Ubah ke :
import os
from PyQt4 import QtGui, uic
FORM_CLASS, _ = uic.loadUiType(os.path.join(
os.path.dirname(__file__), 'Form_dlgtool1.ui'))
class Formdlgtool1Dialog(QtGui.QDialog, FORM_CLASS):
def __init__(self, parent=None):
super(Formdlgtool1Dialog, self).__init__(parent)
self.setupUi(self)
Ikuti prosedur yang sama untuk dua file lainnya ( Form_dlgtool2_dialog.py dan Form_dlgtool3_dialog.py )
Kemudian, untuk mengimpor dialog ke file utama buka file my_toolbar.py dengan editor dan impor yang berikut ini
from Form_dlgtool1_dialog import Formdlgtool1Dialog
from Form_dlgtool2_dialog import Formdlgtool2Dialog
from Form_dlgtool3_dialog import Formdlgtool3Dialog
Akhirnya, untuk mendapatkan contoh dari mereka , tuliskan yang berikut di bagian def __init __ (self, iface) :
self.dlgtool1 = Formdlgtool1Dialog()
self.dlgtool2 = Formdlgtool2Dialog()
self.dlgtool3 = Formdlgtool3Dialog()
Sekarang, Anda dapat membuka file ui di QtDesigner dan menyesuaikannya. Kemudian muat ulang toolbar plugin di dalam QGIS untuk mendapatkan hasil berikut hte