1 . Use el generador de complementos para crear un nuevo complemento
Los archivos creados se muestran en la siguiente imagen
2 . Convierta el archivo de recursos ( resources.qrc ) en un archivo de Python ( resources.py ) utilizando el Shell OSGeo4W
pyrcc4 -o resources_rc.py resources.qrc
Después de eso, si mira dentro de la carpeta del complemento , notará un nuevo archivo .py , el archivo resources.py que acaba de crear. El complemento ahora se puede instalar y abrir a través del menú principal de QGIS> Administrar e instalar complementos.
3 . CÓMO CREAR LA BARRA DE HERRAMIENTAS Y LAS HERRAMIENTAS (botones) Y AGREGAR LAS HERRAMIENTAS EN LA BARRA DE HERRAMIENTAS
Abra con un editor el archivo my_toolbar.py y en la sección de initGui (self) escriba:
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())
De esta forma se han creado tres botones / herramientas.
Para que los botones aparezcan en la barra de herramientas, continúe escribiendo lo siguiente:
self.toolBar.addAction(self.act1)
self.toolBar.addAction(self.act2)
self.toolBar.addAction(self.act3)
Para que los botones al hacer clic para abrir una interfaz gráfica de usuario continúen escribiendo lo siguiente:
QObject.connect(self.act1, SIGNAL("triggered()"), self.runtool1)
QObject.connect(self.act2, SIGNAL("triggered()"), self.runtool2)
QObject.connect(self.act3, SIGNAL("triggered()"), self.runtool3)
Los métodos runtool1 , runtool2 y runtool3 se definen más adelante de la siguiente manera para abrir una interfaz gráfica de usuario diferente para cada botón
def runtool1(self):
self.dlgtool1.show()
def runtool2(self):
self.dlgtool2.show()
def runtool3(self):
self.dlgtool3.show()
De esta forma cuando el botón Tool1 se hace clic en la interfaz gráfica de usuario dlgtool1 se abrirá, cuando el botón tool2 se hace clic en el dlgtool2 se abrirá y cuando el botón Tool3 se hace clic en el dlgtool3 interfaz gráfica de usuario se abrirá.
dlgtool1 , dlgtool2 y dlgtool3 deben ser variables que apuntan a los archivos ui que representan los cuadros de diálogo .
Entonces los diálogos tienen que ser:
creado ,
importado al archivo py principal ( my_toolbar.py ) y
asignado a las variables ( dlgtool1 , dlgtool2 y dlgtool3 ) para obtener una instancia de ellas.
Para crear los diálogos :
- Copie los archivos my_toolbar_dialog.py y my_toolbar_dialog_base.ui
y péguelos dentro de otra carpeta para que pueda cambiarles el nombre. Haga esto tantas veces como sea necesario, para este ejemplo tres veces.
Luego copie estos archivos nuevos y péguelos de nuevo en la carpeta Myplugintoolbar
Abra Form_dlgtool1_dialog.py con un editor para aplicar las siguientes modificaciones:
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)
Cambiar a :
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 el mismo procedimiento para los otros dos archivos ( Form_dlgtool2_dialog.py y Form_dlgtool3_dialog.py )
Luego, para importar los cuadros de diálogo en el archivo principal, abra el archivo my_toolbar.py con el editor e importe lo siguiente
from Form_dlgtool1_dialog import Formdlgtool1Dialog
from Form_dlgtool2_dialog import Formdlgtool2Dialog
from Form_dlgtool3_dialog import Formdlgtool3Dialog
Finalmente, para obtener una instancia de ellos , escriba lo siguiente dentro de la sección def __init __ (self, iface) :
self.dlgtool1 = Formdlgtool1Dialog()
self.dlgtool2 = Formdlgtool2Dialog()
self.dlgtool3 = Formdlgtool3Dialog()
Ahora, puede abrir los archivos ui en QtDesigner y personalizarlos. Luego vuelva a cargar la barra de herramientas del complemento dentro de QGIS para obtener el siguiente resultado