Quiero crear una barra de herramientas con 2 botones, cada botón abriendo una forma diferente.
Los pasos que seguí son:
Creó un complemento con el generador de complementos
Creó una barra de herramientas con 2 botones haciendo las modificaciones necesarias en el archivo de implementación.
Hasta aquí, todo funciona bien, por lo que cuando se hace clic en el primer botón, el formulario correspondiente se abre correctamente. Este formulario es el creado por el generador de complementos.
Entonces quiero tener un segundo formulario que se abrirá cuando se haga clic en el segundo botón. Entonces:
Creó un nuevo formulario en Qt Designer (form2.ui),
Tradujo el archivo ui al archivo py (make) e importó la clase del archivo py traducido al archivo de implementación, obtuve una instancia de la clase (self.dlg2 = Ui_form2 ())
y en el método run () del archivo de implementación escribí:
def run2(self):
self.dlg2.show()
result = self.dlg2.exec_()
Pero luego recibo un mensaje de error de que este nuevo formulario no tiene el método .show (). ¿Debería heredar algo para implementar el método .show ()? Pero, ¿cómo puedo modificar el código de la segunda forma para heredar algo ya que no se pueden guardar todos los cambios en el archivo py traducido del archivo ui?
fuente
initGui()
esta manera:self.add_action( icon_path, text=self.tr(u'plugin3'), callback=self.run3, parent=self.iface.mainWindow())
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
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:
De esta forma se han creado tres botones / herramientas.
Para que los botones aparezcan en la barra de herramientas, continúe escribiendo lo siguiente:
Para que los botones al hacer clic para abrir una interfaz gráfica de usuario continúen escribiendo lo siguiente:
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
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 :
Abra Form_dlgtool1_dialog.py con un editor para aplicar las siguientes modificaciones:
De :
Cambiar a :
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
Finalmente, para obtener una instancia de ellos , escriba lo siguiente dentro de la sección def __init __ (self, iface) :
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
fuente