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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.