Przypisywanie skrótu do skryptu PyQGIS?

9

Czy można przypisać skrót klawiaturowy do (niestandardowego lub nie ...) skryptu Processing Toolbox w QGIS?

Nie znalazłem żadnych informacji na ten temat.

snaileater
źródło
Możesz przypisać klawisze skrótów do wtyczek, które opisano tutaj: Jak wywołać metodę za pomocą skrótu klawiszowego . Być może można to zmodyfikować, aby działało w skrypcie?
Joseph,
Dzięki Joseph ... Sprawdzę to!
snaileater

Odpowiedzi:

9

Oto przykład, jak otworzyć algorytm przetwarzania „Dołącz atrybuty”, naciskając Ctrl+ 1(możesz skopiować i wkleić go w konsoli 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)

Otóż ​​to! Jeśli naciśniesz Ctrl+ 1, otworzy się interfejs dołączania atrybutów:

wprowadź opis zdjęcia tutaj

Uwaga 1: Możesz uzyskać nazwy dostępnych algorytmów, wprowadzając następujące wiersze w konsoli QGIS Python:

import processing
processing.alglist()

Uwaga 2: Zobacz dokumentację Qt4, aby uzyskać pełną listę kluczy.

Uwaga 3: Możesz zadzwonić, shortcut.activated.disconnect(openAlgorithm)aby zakończyć powiązanie między skrótem a interfejsem użytkownika algorytmu.

Germán Carrillo
źródło
1
Z pewnością ...
snaileater
1
Dziękuję Ci. Z jakiegoś powodu widzę w dokumentacji Qt QShortcut w QtWidgets, a nie QtGui (zarówno Qt4, jak i Qt5). W moim przypadku dla QGIS3 i PyQt5 musiałem zrobić: z PyQt5.QtWidgets import QShortcut
Miro