1 . Use o construtor Plugin para criar um novo plugin
Os arquivos criados são mostrados na figura a seguir
2 . Converta o arquivo de recursos ( resources.qrc ) em arquivo Python ( resources.py ) usando o OSGeo4W Shell
pyrcc4 -o resources_rc.py resources.qrc
Depois disso, se você olhar dentro da pasta do plug-in , notará um novo arquivo .py , o arquivo resources.py que acabou de ser criado. O plug-in agora pode ser instalado e aberto através do menu principal do QGIS> Gerenciar e instalar plug-ins.
3 . COMO CRIAR A BARRA DE FERRAMENTAS E AS FERRAMENTAS (botões) E ADICIONAR AS FERRAMENTAS NA BARRA DE FERRAMENTAS
Abra com um editor o arquivo my_toolbar.py e, na seção do initGui (self), escreva:
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())
Dessa forma, três botões / ferramentas foram criados.
Para que os botões apareçam na barra de ferramentas, continue escrevendo o seguinte:
self.toolBar.addAction(self.act1)
self.toolBar.addAction(self.act2)
self.toolBar.addAction(self.act3)
Para que os botões sejam clicados para abrir uma GUI, continue escrevendo o seguinte:
QObject.connect(self.act1, SIGNAL("triggered()"), self.runtool1)
QObject.connect(self.act2, SIGNAL("triggered()"), self.runtool2)
QObject.connect(self.act3, SIGNAL("triggered()"), self.runtool3)
Os métodos runtool1 , runtool2 e runtool3 são definidos posteriormente como a seguir para abrir uma interface gráfica diferente para cada botão
def runtool1(self):
self.dlgtool1.show()
def runtool2(self):
self.dlgtool2.show()
def runtool3(self):
self.dlgtool3.show()
Dessa forma, quando o botão da ferramenta1 é clicado, o gui dlgtool1 será aberto, quando o botão da ferramenta2 for clicado, o dlgtool2 será aberto e quando o botão da ferramenta3 for clicado, o gui do dlgtool3 será aberto.
dlgtool1 , dlgtool2 e dlgtool3 devem ser variáveis apontando para os arquivos da interface do usuário que representam os diálogos .
Portanto, os diálogos devem ser:
criado ,
importados para o arquivo py principal ( my_toolbar.py ) e
atribuído a variáveis ( dlgtool1 , dlgtool2 e dlgtool3 ) para obter uma instância delas.
Para criar os diálogos :
- Copie os arquivos my_toolbar_dialog.py e my_toolbar_dialog_base.ui
e cole-os dentro de outra pasta para poder renomeá-los. Faça isso quantas vezes for necessário, para este exemplo três vezes.
Em seguida, copie esses novos arquivos e cole-os de volta na pasta Myplugintoolbar
Abra Form_dlgtool1_dialog.py com um editor para aplicar as seguintes modificações:
De :
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)
Mude para :
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)
Siga o mesmo procedimento para os outros dois arquivos ( Form_dlgtool2_dialog.py e Form_dlgtool3_dialog.py )
Em seguida, para importar as caixas de diálogo para o arquivo principal, abra o arquivo my_toolbar.py com o editor e importe o seguinte
from Form_dlgtool1_dialog import Formdlgtool1Dialog
from Form_dlgtool2_dialog import Formdlgtool2Dialog
from Form_dlgtool3_dialog import Formdlgtool3Dialog
Por fim, para obter uma instância deles , escreva o seguinte na seção def __init __ (self, iface) :
self.dlgtool1 = Formdlgtool1Dialog()
self.dlgtool2 = Formdlgtool2Dialog()
self.dlgtool3 = Formdlgtool3Dialog()
Agora, você pode abrir os arquivos da interface do usuário no QtDesigner e personalizá-los. Em seguida, recarregue a barra de ferramentas do plugin dentro do QGIS para obter o seguinte resultado