tkinter列表框拖放与python

use*_*854 2 python listbox tkinter widget

任何人都可以指出我在哪里可以找到有关制作列表框的信息,能够拖放项目进行重新安排?我发现了一些与Perl相关的内容,但我对这种语言一无所知,而且我对tkinter很新,所以这很让人困惑.我知道如何生成列表框,但我不知道如何通过拖放重新排序.

Mos*_*she 5

以下是食谱11.4中的代码:

import Tkinter 

class DragDropListbox(Tkinter.Listbox):
    """ A Tkinter listbox with drag'n'drop reordering of entries. """
    def __init__(self, master, **kw):
        kw['selectmode'] = Tkinter.SINGLE
        Tkinter.Listbox.__init__(self, master, kw)
        self.bind('<Button-1>', self.setCurrent)
        self.bind('<B1-Motion>', self.shiftSelection)
        self.curIndex = None

    def setCurrent(self, event):
        self.curIndex = self.nearest(event.y)

    def shiftSelection(self, event):
        i = self.nearest(event.y)
        if i < self.curIndex:
            x = self.get(i)
            self.delete(i)
            self.insert(i+1, x)
            self.curIndex = i
        elif i > self.curIndex:
            x = self.get(i)
            self.delete(i)
            self.insert(i-1, x)
            self.curIndex = i
Run Code Online (Sandbox Code Playgroud)