Recientemente estuvimos revisando sobre cómo implementar, arrastrar y soltar elementos en un wx.ListCtrl o en un ObjectListView. Desafortunadamente, ninguno de los funciones tiene esta función incorporada, aunque si encontré un artículo en la wiki de wxPython que muestra una forma de arrastrar y colocar los elementos en un ListCtrl.

Sin embargo, implementar algunos botones para mover elementos en un widget ObjectListView debería ser más fácil de implementar. Entonces, en eso se enfocará este artículo.

Cambiando el orden de los elementos

Si no tiene wxPython y ObjectListView instalados, debe utilizar pip para instalarlos:

Cuando lo haya realizado, en su IDE favorito (estamos utilizando PyCharm con Python 3) e ingrese el siguiente código:

El código más relevante en este ejemplo son los métodos move_up() y move_down(). Cada uno de estos métodos verificará si tiene seleccionado un elemento en el widget ObjectListView. También captará el contenido actual de los widgets. Si tiene un elemento seleccionado, tomará el índice de ese elemento de los datos del widget ObjectListView que tomamos cuando llamamos a GetObjects().  Entonces podemos usar este índice para determinar si debemos incrementar (move_down) o disminuir(move_up) el índice dependiendo de cual de los botones presionemos.

Después de actualizar la lista con las posiciones modificadas, actualizamos self.products, que es la variable de clase que usamos en setBooks() para actualizar nuestro widget ObjectListView. Finalmente, realmente llamamos a setBooks() y restablecemos la selección desde que se movió nuestra selección original.

Finalmente

En un principio, este proyecto parecía ya terminado, pero hay al menos un problema con esta implementación y es que no funciona correctamente cuando selecciona varios elementos en el control. Probablemente pueda solucionar esto deshabilitando la selección múltiple en su widget ObjectListView o averiguando la lógica para que funcione con múltiples selecciones. Esto se deja en manos del lector a modo de investigación.


Este artículo esta basado en wxPython: Moving Items in ObjectListView

wxPython: Movimiento de elementos en un ObjectListView
Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Google+
Google+
Etiquetado en:        

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook
A %d blogueros les gusta esto: