[Qgis-user] Add context menu to map canvas

Christoph Jung jagodki.cj at gmail.com
Tue Aug 1 07:17:45 PDT 2023


Hello everyone,

I try to add a new entry to the map canvas context menu using the following two documentations:
https://docs.qgis.org/3.28/en/docs/pyqgis_developer_cookbook/canvas.html#add-items-to-map-canvas-contextual-menu

https://github.com/qgis/QGIS-Documentation/issues/5842

Adding a new menu entry from the python console works like a charm. Now I want to provide the context menu through a plugin. But I am not able to connect the context menu with a signal declared as a function in the same class, where I want to connect it. I receive the message, that my plugin class has no method „addMenu“. This is my code snippet:

from qgis.PyQt.QtWidgets import QMenu
from qgis.gui import QgsMapMouseEvent
import json
 
class SmallworldShortcutPlugin:
    
    def __init__(self, iface):
        self.iface = iface
        self.canvas = self.iface.mapCanvas()
        self.canvas.contextMenuAboutToShow.connect(self.populateContextMenu)

The function populateContextMenu is the same as in the documentation. But if I declare the function outside of the class in the same python file, it works very well (of course without calling the function on self). Does anybody has a hint for me how to connect the map canvas context menu with a function from a class? Or is it the right way to declare the function to be connected with the context menu outside of a class?

Best regards,
Christoph 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20230801/7ab5492a/attachment.htm>


More information about the QGIS-User mailing list