sábado, 23 de noviembre de 2019

Obtener las coordenadas de pantalla a partir de las coordenadas del Map Canvas en un plugin con PyQGIS 3

En el código que se presenta a continuación se pretende, cada vez que se lance un plugin para QGIS 3, que éste aparezca alineado con el vértice superior izquierdo de la View del Map Canvas. Esto corresponde a la posición de un QPoint(0,0). Por tanto, sólo se necesita el método 'mapToGlobal' de la clase QgsMapCanvas para convertirlo en un QPoint con las coordenadas de la pantalla.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
.
.
.
from PyQt5.QtCore import QSettings, QTranslator, qVersion, QCoreApplication, QVariant, QPoint
.
.
.

    def run(self):
        """Run method that performs all the real work"""
        # show the dialog
        self.dlg.show()
        mapcanvas = self.iface.mapCanvas()
        point = mapcanvas.mapToGlobal(QPoint(0,0))
        self.dlg.move(point.x(), point.y())
        # Run the dialog event loop
        result = self.dlg.exec_()
        # See if OK was pressed
        if result:
            # Do something useful here - delete the line containing pass and
            # substitute with your code.
            pass

Una vez colocado el código anterior en la parte correspondiente, se ejecuta el Plugin Reloader para evitar salir de QGIS y se lanza el plugin. El resultado, tal como se esperaba, quedó plasmado en la imagen siguiente para un plugin de prueba:


No hay comentarios: