Назначить ярлык скрипту PyQGIS?

9

Можно ли назначить сочетание клавиш для (пользовательского или нет ...) сценария панели инструментов обработки в QGIS?

Я не нашел никакой информации об этом.

snaileater
источник
Вы можете назначить сочетания клавиш для плагинов, которые описаны здесь: Как вызвать метод с помощью сочетания клавиш . Возможно, это можно изменить для работы внутри скрипта?
Иосиф
Thx Джозеф ... я проверю это!
Snaileater

Ответы:

9

Это пример того, как открыть алгоритм обработки «Объединить атрибуты», нажав Ctrl+ 1(вы можете скопировать и вставить его в консоль 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)

Это оно! Если вы нажмете Ctrl+ 1, откроется интерфейс присоединения атрибутов:

введите описание изображения здесь

Примечание 1: Вы можете получить имена доступных алгоритмов, введя эти строки в консоли QGIS Python:

import processing
processing.alglist()

Примечание 2: Смотрите документацию Qt4 для полного списка ключей.

Примечание 3: Вы можете позвонить, shortcut.activated.disconnect(openAlgorithm)чтобы закончить связь между ярлыком и пользовательским интерфейсом вашего алгоритма.

Герман Каррильо
источник
1
Это точно ...
Snaileater
1
Спасибо. Почему-то я вижу в документации Qt QShortcut под QtWidgets, а не QtGui (как Qt4, так и Qt5). В моем случае для QGIS3 и PyQt5 мне пришлось сделать: из PyQt5.QtWidgets импортировать QShortcut
Miro