Get GPS info in QGIS using Python


Warning: sizeof(): Parameter must be an array or an object that implements Countable in /home/ca0z7qw4wks9/public_html/imasdemase.com/wp-content/plugins/papercite/papercite.php on line 205

As a future improvement for my QGIS Plugin Transectizer, I want to be able to get GPS information (coordinates and bearing, for instance) from QGIS’s GPS widget. I read in a post in stackexchange Continue reading

QGIS Plugin: Transectizer

Transectizer

Custom cursor showing bearing

A custom, chatty QGIS plugin cursor showing the bearing line.

Transectizer is a QGIS plugin which provides an easy way to design linear transects with sampling stations distributed at a given distance along the transect.

Transectizer makes possible to automatically generate each individual station details (transect name, station name, station number) or have control over all the attributes of each station.

You can store your transects in a new layer or provide an existing layer for it. In that case, Transectizer will make the appropiate changes to your layer to make it compatible with Transectizer. Continue reading

returnPressed en QComboBox

El problema con la señal returnPressed en QComboBox

Bueno, en esta ocasión voy a hablaros de un problema bastante común que es la imposibilidad de hacer uso de una la señal returnPressed en un QComboBox de PyQt4, los bindings en Python de las librerías Qt de Trolltech.

Una manera rápida de optimizar el trabajo en GUI’s de introducción de datos es hacer saltar el foco de la aplicación al widget que continúa el ciclo de trabajo una vez terminada la edición en el widget anterior. Por ejemplo, si tenemos varios QLineEdit, lo suyo es que el primero pase el foco al segundo, éste al tercero, y así sucesivamente. Esto lo conseguimos, en el caso de QLineEdit, conectando la señal returnPressed() al slot setFocus() del siguiente widget.

Lo ideal es que si en lugar de un QLineEdit tenemos un QComboBox, ocurra igual, es decir, que una vez entrado en éste, al seleccionar un elemento y pulsar [Enter] se pase el foco al widget siguiente. El problema con las librerías Qt4 y, por extensión, PyQt4 , es que se “olvidaron” implementar la señal returnPressed en QComboBox… o no exactamente…

Primeros pasos

Buscando por la red encontré una solución parcial. Al parecer, cuando uno crea un QComboBox editable, el propio comboBox contiene un QLineEdit del cual podemos aprovechar sus señales y conectarlas a slots, accediendo al QLineEdit mediante el método lineEdit() de QComboBox. Por ejemplo, si tuviéramos en nuestro diálogo un QComboBox llamado comboNuevo y quisiéramos conectarlo con la señal setFocus() de otro widget:

ejemplo de returnPressed en QComboBox

Este es el aspecto de un QComboBox con la señal returnPressed habilitada

Como hemos dicho, es preciso que hayamos definido comboNuevo como editable. De esta manera, contendrá un LineEdit; de no ser así, obtendremos una excepción.

La solución para usar la señal returnPressed en QComboBox

La solución es bien sencilla y se trata, simplemente, de indicar que el LineEdit de nuestro QComboBox es de sólo lectura. De esta manera podremos hacer uso de la señal returnPressed en QComboBox:

Bien sencillo y evita tener que hacer engorrosas clases personalizadas, lo que es complicado sobre todo cuando se emplea QtCreator.

¡¡¡Espero que os sirva de ayuda!!!