0

我正在用 Python/Tkinter 编写一个 GUI,其中包括一个带有滚动条的列表框。我已经让滚动条按预期运行(即您可以单击它并在列表框内容中向上/向下滚动),但是滚动条本身的行为方式有些问题。下图应该有助于澄清。

tk.Scrollbar Windows 渲染

列表框大小为 8 行,仅包含 12 行,因此首先滑块应该大很多(滚动条长度的 2/3)。其次,每当我向下滚动时(无论我如何操作),滑块都会“粘”在栏的顶部。这使我无法使用向上快速滚动方法,您单击滑块上方但箭头下方 - 因此向上滚动仅限于使用箭头并一次走一行。向下快速滚动效果很好,尽管如前所述,滑块仍然“粘”在顶部。我可以单击并向下拖动滑块,但随后它会弹回顶部。单击箭头(向上或向下)正常工作。

我尝试在 ttk 中使用替代滚动条,但实际上并没有更好:

ttk.Scrollbar Windows 渲染

在这种情况下,滑块会填满整个栏,您不能快速滚动任何方向,向上或向下。抓取和拖动工作(不知何故),列表框滚动,但你没有视觉提示你离顶部或底部有多近。箭头(再次)正常工作。

简而言之,它是可用的,但非常有问题和奇怪。这只是在 Windows 操作系统上使用 Python/Tkinter 的一个已知限制吗?(我的机器有带有 SP 3 的 Windows XP(32 位)。它是 Python 版本 2.7.3。)

4

1 回答 1

4

听起来您没有正确配置滚动条。您必须进行双向连接。您需要配置列表框以了解滚动条(以便它更新拇指),并且您需要配置滚动条以了解列表框(以便它滚动列表框的内容)。

您描述的行为听起来像是您忘记了前者。也许如果您向我们展示您的鳕鱼,我们可以确认这一点。你在做类似下面的事情吗?

my_listbox.configure(yscrollcommand=my_scrollbar.set)
my_scrollbar.configure(command=my_listbox.yview)
于 2013-01-05T00:10:15.023 回答