Attribuer un raccourci au script PyQGIS?

9

Est-il possible d'assigner un raccourci clavier à un script (personnalisé ou non ...) de la boîte à outils de traitement dans QGIS?

Je n'ai trouvé aucune information à ce sujet.

escargot
la source
Vous pouvez affecter des touches de raccourci aux plugins, comme décrit ici: Comment appeler une méthode par un raccourci clavier . Peut-être que cela peut être modifié pour fonctionner dans un script?
Joseph
Thx Joseph ... je vais vérifier ça!
snaileater

Réponses:

9

Voici un exemple de la façon d'ouvrir l'algorithme de traitement des «attributs de jointure» en appuyant sur Ctrl+ 1(vous pouvez le copier et le coller dans la console 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)

C'est ça! Si vous appuyez sur Ctrl+, 1l'interface utilisateur Join Attributes s'ouvrira:

entrez la description de l'image ici

Remarque 1: Vous pouvez obtenir les noms des algorithmes disponibles en entrant ces lignes dans la console QGIS Python:

import processing
processing.alglist()

Remarque 2: Voir la documentation Qt4 pour une liste complète des clés.

Remarque 3: vous pouvez appeler shortcut.activated.disconnect(openAlgorithm)pour terminer l'association entre le raccourci et l'interface utilisateur de votre algorithme.

Germán Carrillo
la source
1
C'est sûr ...
Snaileater
1
Je vous remercie. Pour une raison quelconque, je vois dans la documentation Qt QShortcut sous QtWidgets et non QtGui (à la fois Qt4 et Qt5). Dans mon cas pour QGIS3 et PyQt5 je devais faire: depuis PyQt5.QtWidgets importer QShortcut
Miro