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:
Publicar un comentario