Menetapkan pintasan ke skrip PyQGIS?

9

Apakah mungkin untuk menetapkan pintasan keyboard ke skrip (kustom atau tidak ...) dari Toolbox Pemrosesan di QGIS?

Saya belum menemukan informasi tentang itu.

siput
sumber
Anda dapat menetapkan tombol pintasan ke plugin yang dijelaskan di sini: Cara memanggil metode dengan pintasan kunci . Mungkin ini dapat dimodifikasi agar berfungsi dalam skrip?
Joseph
Terima kasih ... saya akan periksa ini!
snaileater

Jawaban:

9

Ini adalah contoh cara membuka algoritme pemrosesan "Gabung atribut" dengan menekan Ctrl+ 1(Anda dapat menyalin dan menempelnya ke konsol Python QGIS):

# 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)

Itu dia! Jika Anda menekan Ctrl+ 1UI Gabung Atribut akan terbuka:

masukkan deskripsi gambar di sini

Catatan 1: Anda bisa mendapatkan nama-nama algoritma yang tersedia dengan memasukkan baris-baris ini di konsol Python QGIS:

import processing
processing.alglist()

Catatan 2: Lihat dokumen Qt4 untuk daftar kunci yang lengkap.

Catatan 3: Anda dapat menelepon shortcut.activated.disconnect(openAlgorithm)untuk menyelesaikan hubungan antara pintasan dan UI algoritme Anda.

Germán Carrillo
sumber
1
Itu pasti ...
snaileater 3-15
1
Terima kasih. Untuk beberapa alasan saya lihat di dokumentasi Qt QShortcut di bawah QtWidgets dan bukan QtGui (keduanya Qt4 dan Qt5). Dalam kasus saya untuk QGIS3 dan PyQt5 yang harus saya lakukan: dari PyQt5.QtWidgets import QShortcut
Miro