cambio de orden de los elementos en el cuadro de lista tkinter

¿Hay una manera más fácil de cambiar el orden de los elementos en un cuadro de lista de tkinter que eliminar los valores de una clave específica y luego volver a ingresar la información nueva?

Por ejemplo, quiero poder reorganizar los elementos en un cuadro de lista. Si quiero cambiar la posición de dos, esto es lo que he hecho. Funciona, pero solo quiero ver si hay una manera más rápida de hacer esto.

def moveup(self,selection): value1 = int(selection[0]) - 1 #value to be moved down one position value2 = selection #value to be moved up one position nameAbove = self.fileListSorted.get(value1) #name to be moved down nameBelow = self.fileListSorted.get(value2) #name to be moved up self.fileListSorted.delete(value1,value1) self.fileListSorted.insert(value1,nameBelow) self.fileListSorted.delete(value2,value2) self.fileListSorted.insert(value2,nameAbove) 

¿Hay una manera más fácil de cambiar el orden de los elementos en un cuadro de lista de tkinter que eliminar los valores de una clave específica y luego volver a ingresar la información nueva?

No. Eliminar y reinsertar es la única forma. Sin embargo, si solo desea mover un solo elemento hacia arriba, puede hacerlo con solo eliminar e insertar.

 def move_up(self, pos): """ Moves the item at position pos up by one """ if pos == 0: return text = self.fileListSorted.get(pos) self.fileListSorted.delete(pos) self.fileListSorted.insert(pos-1, text) 

Para ampliar la respuesta de Tim, es posible hacer esto para varios elementos también si utiliza la función “currentselection ()” del tkinter.listbox.

 l = self.lstListBox posList = l.curselection() # exit if the list is empty if not posList: return for pos in posList: # skip if item is at the top if pos == 0: continue text = l.get(pos) l.delete(pos) l.insert(pos-1, text) 

Esto movería todos los elementos seleccionados hasta 1 posición. También podría adaptarse fácilmente para mover los artículos hacia abajo. Tendría que verificar si el elemento estaba al final de la lista en lugar de la parte superior, y luego agregar 1 al índice en lugar de restar. También querrá revertir la lista del bucle para que los índices cambiantes no arruinen futuros movimientos en el conjunto.