Python3 tkinter在widget上放置了不可见的滚动条?

时间:2017-06-30 14:03:11

标签: python-3.x tkinter treeview scrollbar

我想在Treeview上放置一个看不见的滚动条 我使用树莓派,并有一个小触摸屏,因此我想有效地利用空间 我不得不调整我的滚动条的大小,因为我无法弄清楚如何进行“刷卡” - 在树视图中滚动 这就是为什么我现在的空间非常小,而且字体太小了 是否有任何方法可以使滚动条不可见,但在铺设另一个小部件时仍可使用,例如。地方功能?

1 个答案:

答案 0 :(得分:1)

您不需要滚动条滚动。所有可滚动的小部件都有一个用于滚动的api:xviewyview方法。滚动条只是调用这些方法的一种方便方法,但它不是唯一的方法。

我不知道滑动会发送什么事件,但您可以绑定到这些事件并自行直接调用xview和/或yview方法。

例如,我们假设触摸是<B1>事件,而滑动是<B1-Motion>事件。您可以使用这样的滑动动作进行滚动:

class Example:
    def __init__(self):
        ...
        self.tree = ttk.Treeview(...)
        self.tree.bind("<B1>", self.start_swipe)
        self.tree.bind("<B1-Motion>", self.on_swipe)
        ...

    def start_swipe(self, event):
        self.last_y = event.y

    def on_swipe(self, event):
        # only do the scrolling if the swipe is 10 pixels or more
        if abs(event.y - self.swipe_start) < 10:
            return

        # compute whether we are scrolling up or down
        delta = -1 if event.y > self.last_y else 1

        # remember this location for the next time this is called
        self.last_y = event.y

        # do the scroll
        self.tree.yview_scroll(delta, "units")