Tkinter:列表框拖动选择

时间:2012-07-19 03:54:19

标签: python listbox tkinter mouse coordinates

我遇到了右键选择方式的问题。我对坐标不好,所以我不知道如何扭转我选择的方式。我想按照鼠标的方式滚动列表框选择,而不是像现在这样反转。我只想在向下/向上移动鼠标时选择列表框中的下一个项目。

from Tkinter import *

def _select(y):
    row = lb.nearest(y)
    lb.selection_clear(0, END)
    lb.selection_set(row)

def _b2motion(x, y):
    lb.scan_dragto(x, y)
    _select(y)
    return 'break'


root = Tk()

sb = Scrollbar(root)
lb =Listbox(root, width=20,yscrollcommand=sb.set)

lb.bind('<B3-Motion>', lambda e: _b2motion(e.x, e.y))
sb.config(command=lb.yview)

lb.grid(row=0,column=0)
sb.grid(row=0,column=1,sticky=N+S)


for x in range(50):
    lb.insert(END, x)

mainloop()

1 个答案:

答案 0 :(得分:1)

如果您在动画框中翻转y上的符号,这将改变滚动的方向。如果你需要它更慢,除以整数,我喜欢3。

def _b2motion(x, y):
    lb.scan_dragto(x, (-y/3)) #here
    _select(y)
    return 'break'

我不确定你问题的其余部分是什么......你试图用右键复制左键的功能吗?