Asignación de acceso directo al script PyQGIS?

9

¿Es posible asignar un método abreviado de teclado a un script (personalizado o no ...) de Processing Toolbox en QGIS?

No he encontrado ninguna información al respecto.

caracol
fuente
Puede asignar teclas de acceso directo a los complementos que se describen aquí: Cómo llamar a un método mediante un acceso directo de tecla . ¿Quizás esto se pueda modificar para que funcione dentro de un script?
Joseph
Gracias Joseph ... ¡Voy a comprobar esto!
Snaileater

Respuestas:

9

Este es un ejemplo de cómo abrir el algoritmo de procesamiento "Unir atributos" presionando Ctrl+ 1(puede copiarlo y pegarlo en la consola QGIS Python):

# Function to open the "Join attributes" algorithm's UI
# See http://gis.stackexchange.com/questions/156633/how-to-launch-processing-tool-user-interface-using-pyqgis
from processing.core.Processing import Processing
from processing.gui.CommanderWindow import CommanderWindow
cw = CommanderWindow(iface.mainWindow(), iface.mapCanvas())
def openAlgorithm():
    alg = Processing.getAlgorithm("qgis:joinattributestable")
    if alg is not None:
        cw.runAlgorithm(alg)

# Assign "Ctrl+1" to openAlgorithm()
from PyQt4.QtGui import QShortcut, QKeySequence
from PyQt4.QtCore import Qt
shortcut = QShortcut(QKeySequence(Qt.ControlModifier + Qt.Key_1), iface.mainWindow())
shortcut.setContext(Qt.ApplicationShortcut)
shortcut.activated.connect(openAlgorithm)

¡Eso es! Si presiona Ctrl+, 1se abrirá la interfaz de usuario de Join Attributes:

ingrese la descripción de la imagen aquí

Nota 1: Puede obtener los nombres de los algoritmos disponibles ingresando estas líneas en la consola QGIS Python:

import processing
processing.alglist()

Nota 2: Consulte los documentos de Qt4 para obtener una lista completa de las claves.

Nota 3: puede llamar shortcut.activated.disconnect(openAlgorithm)para finalizar la asociación entre el acceso directo y la interfaz de usuario de su algoritmo.

Germán Carrillo
fuente
1
Lo hace seguro ...
snaileater
1
Gracias. Por alguna razón, veo en la documentación de Qt QShortcut en QtWidgets y no en QtGui (Qt4 y Qt5). En mi caso para QGIS3 y PyQt5 tuve que hacer: desde PyQt5.QtWidgets import QShortcut
Miro