QGIS PyQGIS – Displaying a QMessageBox Alert When ‘Toggle Editing’ is Clicked

editingpyqgisqgis-3

I am required to display a QMessageBox.warning() as a reminder to update a specific field when "Toggle editing" is clicked. This is required for a project in QGIS. Currently, I just can display the QmessageBox to notice which layer is active

from PyQt5.QtWidgets import QMessageBox

from qgis.core import QgsProject

layer=qgis.utils.iface.mapCanvas().currentLayer()

QMessageBox.warning(iface.mainWindow(), "Capa Activa", 'La capa activa es ' +layer.name())

Best Answer

You need to "connect" your function to the signal beforeEditingStarted belonging to the QgsVectorLayer class. https://api.qgis.org/api/classQgsVectorLayer.html#a817d41d8320a54b2d51fbcb54e7fe2dd

from qgis.PyQt.QtWidgets import QMessageBox
from qgis.core import QgsProject

def start_editing():
    layer = iface.activeLayer()
    QMessageBox.warning(
        iface.mainWindow(),
        "Capa Activa",
        f'The layer {layer.name()} is now in editing mode.'
    )

layer = iface.activeLayer()
layer.beforeEditingStarted.connect(start_editing)
Related Question