gpt4 book ai didi

python - 将 Tkinter 滚动条跳转到某个小部件

转载 作者:行者123 更新时间:2023-12-04 10:43:50 24 4
gpt4 key购买 nike

我已经像这样在我的 Tkinter GUI 中添加了一些滚动条功能

self.canvas = tk.Canvas(self.baseframe)
self.scrollbar = tk.Scrollbar(self.baseframe, orient="vertical", command=self.canvas.yview)
self.scrollable = tk.Frame(self.canvas)
self.scrollable.bind("<Configure>", lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all")))
self.canvas.create_window((0, 0), window=self.scrollable, anchor="n")
self.canvas.configure(yscrollcommand=self.scrollbar.set)
self.canvas.bind_all("<MouseWheel>", self._mousescroll)

我已经定义了 _mousecroll()作为
    def _mousescroll(self, event):
"""mouse wheel scroll callback"""
# Divide the event.delta by some value to effect the scrolling speed
self.canvas.yview_scroll(int(-1*(event.delta/120)), "units")


这是很好的工作。

然后我添加一些 tkLabelFrame小部件到滚动区域(它们本身包含显示内容的小部件 - 与此问题无关)。整个滚动功能非常有效。

在我的 GUI 的其他部分,我希望用户能够通过单击按钮“跳转”到滚动区域中的特定点。实际上会自动将滚动区域滚动到这一点。这可能吗?我可以完全控制 GUI 代码,因此我可以将标签添加到 tkLabelFrames 列表中,将它们存储在某种列表/字典中,以便可以轻松查找它们......类似的东西?

注:数量 tkLabelFrames添加到滚动区域的那些是动态的,因此某种绝对的“跳转到这么多像素”可能不起作用。我希望可能有某种“滚动到具有此标签/属性等的小部件”功能。任何帮助表示赞赏。谢谢。

最佳答案

对于我的特定场景,可滚动区域内的小部件的高度都相同,因此我能够使用简单的分数滚动到正确的位置。

添加一个按钮,对这样的方法进行回调对我有用:

def scrollto(self, idx):
# Where self.frames is the list of tkLabelFrame objects.
fraction = float(idx/len(self.frames))

# self.canvas is my scrollable canvas
self.canvas.yview_moveto(fraction)

关于python - 将 Tkinter 滚动条跳转到某个小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com