python - tkinter 列表框用 python 拖放

标签 python listbox widget tkinter

谁能告诉我在哪里可以找到有关制作列表框的信息,该列表框能够拖放项目以进行重新排列?我发现了一些与 Perl 相关的内容,但我对那种语言一无所知,而且我对 tkinter 还很陌生,所以这很令人困惑。我知道如何生成列表框,但我不确定如何通过拖放对其重新排序。

最佳答案

这是来自 Recipe 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

关于python - tkinter 列表框用 python 拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459993/

相关文章:

python - 如何在 Python 代码中使用 postgres 游标

python - IDLE 3.7 无法向上滚动

c# - 使用数据模板和绑定(bind)数据以编程方式创建列表框

swift - 如何刷新Widget数据?

python - 列表和 numpy 数组之间的比较

python - Pandas:对数据框中的行进行排序

WPF Listbox - 空列表显示消息

wpf - 代码和 xaml 中的 ListBox.ItemsSource 绑定(bind)

css - 使用 CSS 将样式/格式从一个 WordPress 小部件复制到另一个小部件

Python tkinter 标签小部件鼠标悬停