5 votos

¿Cómo cambiar la visibilidad cuando se hace clic en el botón de nuevo en PyQGIS?

Estoy intentando crear un botón que cambie la visibilidad de las capas agrupadas. Cuando el usuario hace clic en el botón, todas las capas dentro del grupo se ocultan cuando se vuelve a hacer clic en todas las capas.

Hasta ahora sé cómo ocultar capas y configurarlas en dos botones separados. Pero no puedo agregar a la función dentro de un botón.

      #connect to Hide_int button that hide intensity rasters
     self.dockwidget.Hide_int.clicked.connect(self.hideint)

     #connect to Hide_img button that hide img rasters
     self.dockwidget.Hide_img.clicked.connect(self.hideimg)                

    def hideint(self):          
        self.maps_treeview = QTreeView()            
        QgsProject.instance().layerTreeRoot().findGroup('Int').setVisible(0)            
        print "Connected"            
        pass

    def hideimg(self):            
        QgsProject.instance().layerTreeRoot().findGroup('Int').setVisible(2)
        QgsProject.instance().layerTreeRoot().findGroup('Int').updateChildVisibility()
        print "Connected"            
        pass
 

Estoy usando Qgis 2.16. ¿Me puedes ayudar?

6voto

Mue Puntos 2469

Puede usar algo como lo siguiente que comprueba:

  • Si el grupo está desmarcado o parcialmente marcado, verifíquelo
  • Si el grupo está marcado, desmárquelo

Aquí está el código probado en QGIS 2.18.2:

 def show_hide_group(self):
    group = QgsProject.instance().layerTreeRoot().findGroup('Int')
    # 0 = Unchecked; 1 = Partially checked; 2 = Checked
    if group.isVisible() in (0, 1):
        group.setVisible(2)
    else:
        group.setVisible(0)

self.dockwidget.show_hide_pushButton.clicked.connect(self.show_hide_group)
 

4voto

Elliott Maynard Puntos 11

Usted puede encontrar un botón de alternar la mano. Ver este sencillo plugin para un ejemplo.

icon = QIcon()
icon.addFile( ":/plugins/myPlugin/iconOff.png", state=QIcon.Off )
icon.addFile( ":/plugins/myPlugin/iconOn.png", state=QIcon.On )
self.action = QAction( icon, u"Toggle group visibility", self.iface.mainWindow() )
self.action.toggled.connect( self.run )
self.action.setCheckable( True )

Ahora, si el botón está marcada hacer algo, si no está marcada hacer algo más.

def run( self, checked ):
    if checked:
        # Hide the group    
    else:
        # Show the group

Si usted utiliza el Plugin Generador, se puede lograr mediante el establecimiento de la checkable=True para la acción. Consulte Cómo comprobar si el plugin icono se activa?

Cómo configurar los accesos directos ya ha sido contestado en el SIG.SE. Por ejemplo: Cómo habilitar un método abreviado de teclado para un plugin

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X