是否可以在没有滚动条的情况下滚动Tkinter列表框?

时间:2016-07-05 06:18:20

标签: python tkinter listbox raspberry-pi

我想在我的RPi上创建GUI,这样我就可以像在iPhone中一样滚动列表框,而无需使用滚动条。换句话说,只需触摸列表框并向上/向下“轻弹”您的手指,我希望能够滚动。

这种滚动方法可以用TKinter或任何用于RPi的GUI完成吗?

1 个答案:

答案 0 :(得分:1)

是的。

看看滚动条的绑定是如何工作的。

如何达到预期的效果? Bin Mouse-Move事件(触摸移动不是别的)并使用它将它连接到yview / xview,具体取决于你想要的滚动。

(例如,检查鼠标在回调中的移动方向,并使用该信息触发滚动事件。)

如果需要进一步的帮助,请告诉我们。

修改

这里有一些“虚拟代码”......

# this is your callback bound to mouse-move event
def mouse_move_callback(event):
    # use event.y with a previous remembered y value to determine
    # directions
    directions = 1 # just as an example, could also be -1

    # scroll the listbox vertically. 
    # to increase scrolling speed, either multiply counter by some value >1
    # or replace 'units' which means scroll 1 character in the current setting 
    # by 'pages' for larger steps. 'pages' should scroll the visible 
    # area of the listbox further.
    listbox.yview_scroll(1, 'units')

您还可以使用鼠标按钮和鼠标按钮释放来触发操作。按下鼠标按钮将存储y值(滚动开始),鼠标按钮释放将绑定到上述回调。