изменение порядка элементов в списке tkinter

Есть ли более простой способ изменить порядок элементов в списке tkinter, чем удалить значения для определенного ключа, а затем повторно ввести новую информацию?

Например, я хочу иметь возможность переупорядочивать элементы в списке. Если я хочу поменять положение двух, это то, что я сделал. Это работает, но я просто хочу посмотреть, есть ли более быстрый способ сделать это.

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)

Ответы на вопрос(2)

er, чем удалить значения для определенного ключа, а затем повторно ввести новую информацию?

Нет. Удаление и повторная вставка - единственный способ. Если вы просто хотите переместить один элемент на один, вы можете сделать это только с одним удалением и вставкой.

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)

это можно сделать и для нескольких элементов, если вы используете функцию «currentselection ()» из 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)

Это переместит все выбранные элементы на 1 позицию. Он также может быть легко адаптирован для перемещения предметов вниз. Вам нужно будет проверить, находится ли элемент в конце списка вместо вершины, а затем добавить 1 к индексу вместо вычитания. Вы также хотели бы перевернуть список для цикла, чтобы изменяющиеся индексы не испортили будущие перемещения в наборе.

Ваш ответ на вопрос