Atribuindo atalho ao script PyQGIS?

9

É possível atribuir um atalho de teclado a um script (personalizado ou não ...) da Processing Toolbox no QGIS?

Não encontrei nenhuma informação sobre isso.

snaileater
fonte
Você pode atribuir teclas de atalho a plug-ins descritos aqui: Como chamar um método usando um atalho de tecla . Talvez isso possa ser modificado para funcionar dentro de um script?
Joseph Joseph
Thx Joseph ... eu vou verificar isso!
snaileater

Respostas:

9

Este é um exemplo de como abrir o algoritmo "Processar atributos de junção" ao pressionar Ctrl+ 1(você pode copiá-lo e colá-lo no console do 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)

É isso aí! Se você pressionar Ctrl+, 1a interface do usuário de Atributos de associação será aberta:

insira a descrição da imagem aqui

Nota 1: Você pode obter os nomes dos algoritmos disponíveis digitando estas linhas no console do QGIS Python:

import processing
processing.alglist()

Nota 2: consulte os documentos Qt4 para obter uma lista abrangente de chaves.

Nota 3: Você pode ligar shortcut.activated.disconnect(openAlgorithm)para concluir a associação entre o atalho e a interface do usuário do seu algoritmo.

Germán Carrillo
fonte
11
Ele faz com certeza ...
snaileater
11
Obrigado. Por alguma razão, vejo na documentação do Qt QShortcut em QtWidgets e não no QtGui (ambos Qt4 e Qt5). No meu caso para QGIS3 e PyQt5 eu tinha que fazer: a partir PyQt5.QtWidgets importar QShortcut
Miro