12

Is it possible to assign a keyboard shortcut to a (custom or not...) script of the Processing Toolbox in QGIS?

I have not found any information about it so far.

2
13

This is an example of how to open the Processing "Join attributes" algorithm by pressing Ctrl + Shift + 1 (you can copy and paste it into the QGIS Python console):

For QGIS v3.x

# Function to open the "Join attributes" algorithm's UI
def openAlgorithm():
    processing.execAlgorithmDialog("native:joinattributestable")

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

That's it! If you press Ctrl + Shift + 1 the Join Attributes UI will open:

enter image description here


Note 1.1: Get a readable list of algorithm ids and names in this way:

for alg in QgsApplication.processingRegistry().algorithms():
    print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayName()))

Note 1.2: See Qt5 docs for a comprehensive list of keys.

For QGIS v2.x

# 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+Shift+1" to openAlgorithm()
from PyQt4.QtWidgets import QShortcut
from PyQt4.QtGui import QKeySequence
from PyQt4.QtCore import Qt
shortcut = QShortcut(QKeySequence(Qt.ControlModifier + Qt.ShiftModifier + Qt.Key_1), iface.mainWindow())
shortcut.setContext(Qt.ApplicationShortcut)
shortcut.activated.connect(openAlgorithm)

That's it! If you press Ctrl + Shift + 1 the Join Attributes UI will open:

enter image description here

Note 2.1: You can get the names of the available algorithms by entering these lines in the QGIS Python console:

import processing
processing.alglist()

Note 2.2: See Qt4 docs for a comprehensive list of keys.

Note 2.3: You can call shortcut.activated.disconnect(openAlgorithm) to finish the association between the shortcut and your algorithm's UI.

3
  • 1
    It does for sure ... – Snaileater Nov 3 '15 at 17:36
  • 2
    Thank you. For some reason I see in Qt documentation QShortcut under QtWidgets and not QtGui (both Qt4 and Qt5). In my case for QGIS3 and PyQt5 I had to do: from PyQt5.QtWidgets import QShortcut – Miro Jul 22 '19 at 23:03
  • It's now fixed Miro! – Germán Carrillo Jun 6 at 3:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.