Xóa phần mềm Lưu dưới dạng từ trên ra khỏi Trình đơn ngữ cảnh của QGIS bằng PyQGIS [đã đóng]


9

Tôi muốn xóa một tùy chọn hiện có ("Lưu dưới dạng") khỏi menu ngữ cảnh của lớp QGIS, điều tôi đã tìm thấy cho đến nay là, để thêm hành động mới trong LegendItemshoặc ghi đè hoàn toàn với các tùy chọn mới. Nhưng không thể tìm thấy bất kỳ tùy chọn nào bằng cách sử dụng mà tôi có thể xóa tùy chọn menu Ngữ cảnh mặc định hiện có.

Những gì tôi cũng đã thấy rằng có sẵn phương thức menuProvider () , nhưng không thể có bất kỳ chi tiết nào với phương thức này.

Làm cách nào tôi có thể xóa tùy chọn "Lưu dưới dạng" khỏi menu ngữ cảnh của QGIS?


để xóa tất cả các tùy chọn và thêm tùy chọn tùy chỉnh, hãy kiểm tra điều này: gis.stackexchange.com/a/250170/49538
Fran Raga

Tôi đã thấy rằng, điều đang tìm kiếm là chỉ xóa một hành động của menu Ngữ cảnh hiện có.
Ahsan Mukhtar

Tôi tạo bản nháp chỉ bằng cách thực hiện lần nhấp đầu tiên, tôi nghĩ rằng mọi hành động đều không thể xóa được. Bạn sao chép bối cảnh này, nhưng không phải tất cả hành động đều có phương pháp python trong QGIS Api
Fran Raga

1
Làm thế nào tôi có thể sao chép tất cả các hành động mặc định?
Ahsan Mukhtar

Kiểm tra ví dụ này github.com/valheran/QDriller/blob/ trênqgis.org/api/2.18/ classQgsLayerTreeViewDefaultActions.html nhưng không phải tất cả hành động đều có phương pháp
Fran Raga

Câu trả lời:


1

Bạn cần ghi đè Menu ngữ cảnh hiện tại, sử dụng lớp tùy chỉnh của bạn

Mã mẫu tối thiểu để xóa tùy chọn " Xuất "

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

Menu "Cài đặt" => "Tùy chỉnh giao diện" trong Menu / mProjectMothy tắt mActionSaveProjectAs


1
Đó là tùy chọn để vô hiệu hóa dự án của QGIS, nhưng không phải là lớp, phải không?
Ahsan Mukhtar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.