การกำหนดทางลัดให้กับสคริปต์ PyQGIS หรือไม่


9

เป็นไปได้ไหมที่จะกำหนดแป้นพิมพ์ลัดให้กับสคริปต์ (กำหนดเองหรือไม่ ... ) ของเครื่องมือประมวลผลใน QGIS?

ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับมัน


คุณสามารถกำหนดปุ่มลัดเพื่อปลั๊กอินซึ่งจะอธิบายที่นี่: วิธีการเรียกวิธีโดยคีย์ลัด บางทีสิ่งนี้สามารถปรับเปลี่ยนให้ทำงานภายในสคริปต์ได้หรือไม่
โจเซฟ

ขอบคุณโจเซฟ ... ฉันจะตรวจสอบสิ่งนี้!
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+ 1UI เข้าร่วมของแอตทริบิวต์จะเปิดขึ้น:

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ 1: คุณสามารถรับชื่อของอัลกอริทึมที่มีอยู่ได้โดยป้อนบรรทัดเหล่านี้ในคอนโซล QGIS Python:

import processing
processing.alglist()

หมายเหตุ 2: ดูเอกสาร Qt4สำหรับรายการคีย์ที่ครอบคลุม

หมายเหตุ 3: คุณสามารถโทรshortcut.activated.disconnect(openAlgorithm)เพื่อสิ้นสุดการเชื่อมโยงระหว่างทางลัดและ UI ของอัลกอริทึมของคุณ


1
มันแน่นอน ...
snaileater

1
ขอบคุณ. ด้วยเหตุผลบางอย่างที่ฉันเห็นในเอกสาร Qt QShortcut ภายใต้ QtWidgets และไม่ใช่ QtGui (ทั้ง Qt4 และ Qt5) ในกรณีของฉันสำหรับ QGIS3 และ PyQt5 ฉันต้องทำ: จาก PyQt5.QtWidgets นำเข้า QShortcut
Miro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.