ลบ“ บันทึกเป็น” ออกจากเมนูบริบท QGIS โดยใช้ PyQGIS [ปิด]


8

ฉันต้องการลบตัวเลือกที่มีอยู่ ("บันทึกเป็น") จากเมนูบริบทของเลเยอร์ QGIS สิ่งที่ฉันได้พบคือการเพิ่มการกระทำใหม่ในLegendItemsหรือเขียนทับตัวเลือกใหม่อย่างสมบูรณ์ แต่ไม่พบตัวเลือกใด ๆ โดยใช้ที่ฉันจะสามารถลบตัวเลือกเมนูบริบทเริ่มต้นที่มีอยู่

สิ่งที่ฉันได้เห็นว่ามีวิธีการmenuProvider ()ใช้ได้ แต่ไม่สามารถรับรายละเอียดใด ๆ ด้วยวิธีนี้

ฉันจะลบตัวเลือก "บันทึกเป็น" ที่มีอยู่ออกจากเมนูบริบทของ QGIS ได้อย่างไร


สำหรับการลบตัวเลือกทั้งหมดและเพิ่มตัวเลือกที่กำหนดเองให้ตรวจสอบสิ่งนี้: gis.stackexchange.com/a/250170/49538
Fran Raga

ฉันได้เห็นแล้วว่าสิ่งที่กำลังมองหาคือการลบเมนูบริบทที่มีอยู่เพียงหนึ่งการกระทำ
Ahsan Mukhtar

ฉันสร้างร่างโดยทำงานเฉพาะการคลิกครั้งแรกฉันคิดว่าการกระทำใด ๆ จะไม่ถูกลบได้คุณต้องทำซ้ำบริบทนี้เมนู แต่ไม่ทุกการกระทำมีวิธีไพ ธ อนใน QGIS Api
Fran Raga

1
ฉันจะทำซ้ำการกระทำเริ่มต้นทั้งหมดได้อย่างไร
Ahsan Mukhtar

ตรวจสอบตัวอย่างนี้github.com/valheran/QDriller/blob/ …และqgis.org/api/2.18/classQgsLayerTreeViewDefaultActions.html แต่การกระทำบางอย่างไม่มีวิธี
Fran Raga

คำตอบ:


2

คุณต้องแทนที่เมนูบริบทปัจจุบันโดยใช้คลาสที่กำหนดเองของคุณ

ตัวอย่างรหัสขั้นต่ำสำหรับการลบตัวเลือก " ส่งออก "

from qgis.gui import QgsLayerTreeViewMenuProvider

ltv = iface.layerTreeView()
mp=ltv.menuProvider()
cm = mp.createContextMenu()

for action in cm.actions():
    # Need text value ,this object not have ObjectName
    if action.text() == "Exportar":
        cm.removeAction(action);
    #print (action.objectName())

class CustomMenuProvider(QgsLayerTreeViewMenuProvider):

  def __init__(self, view, actions):
    QgsLayerTreeViewMenuProvider.__init__(self)
    self.view = view
    self.defaultActions = actions

  def createContextMenu(self):
    if not self.view.currentLayer():
      return None
    m = QMenu()
    m.addActions(self.defaultActions)
    return m


provider = CustomMenuProvider(ltv, cm.actions())
ltv.setMenuProvider(provider)

-1

นำทาง "การตั้งค่า => การปรับแต่งอินเตอร์เฟส" และปิดการใช้งาน "mActionSaveProjectAs" ใน "เมนู / mProjectMenu"


1
นั่นคือตัวเลือกในการปิดการใช้งานโครงการของ QGIS แต่ไม่ใช่เลเยอร์
Ahsan Mukhtar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.