Puede acceder a los botones (acciones) de la barra de herramientas de QGIS mediante el botón iface
objeto ( docs aquí ). A partir de esas acciones puede crear un QActionGroup
y añada su acción personalizada haciendo que todas las acciones sean mutuamente excluyentes.
El siguiente fragmento de código muestra cómo hacerlo, paso a paso. He puesto el fragmento de código en la sección initGui(self)
de mi plugin de prueba.
# Make sure your action can be toggled
self.action.setCheckable( True )
# Build an action list from QGIS navigation toolbar
actionList = self.iface.mapNavToolToolBar().actions()
# Add actions from QGIS attributes toolbar (handling QWidgetActions)
tmpActionList = self.iface.attributesToolBar().actions()
for action in tmpActionList:
if isinstance(action, QWidgetAction):
actionList.extend( action.defaultWidget().actions() )
else:
actionList.append( action )
# ... add other toolbars' action lists...
# Build a group with actions from actionList and add your own action
group = QActionGroup( self.iface.mainWindow() )
group.setExclusive(True)
for action in actionList:
group.addAction( action )
group.addAction( self.action )
Puede obtener un plugin de demostración mostrando este comportamiento desde aquí . En el archivo README tienes instrucciones de instalación y configuración.
Después de instalar el plugin de demostración, puedes notar que el botón de tu plugin desactiva los botones de QGIS y al revés.
Nota: Sólo he incluido acciones de las barras de herramientas de Navegación y Atributos QGIS. Puede que necesites añadir también otras acciones de la barra de herramientas QGIS. Todas las barras de herramientas QGIS que puedes obtener están expuestas en el archivo QgisInterface .
1 votos
Bienvenido a GIS:SE ¿Podrías incluir tu código para los posibles contestadores, por favor? Esto facilitaría su ayuda.