我在Python / Tkinter中编写一个GUI,其中包含一个带滚动条的列表框。我已经让滚动条按预期运行(即你可以点击并在列表框内容中向上/向下滚动),但滚动条本身的行为方式有些不对劲。下面的图片应该有助于澄清。
列表框的大小为8行,仅包含12行,因此首先关闭滑块应该要大得多(滚动条长度的2/3)。其次,每当我向下滚动时(无论我如何操作),滑块都会“粘在”条形顶部。这使我无法使用向上快速滚动方法,您可以在滑块上方但在箭头下方单击 - 因此向上滚动仅限于使用箭头并一次移动一行。向下快速滚动工作正常,但如前所述,滑块仍保持“胶合”到顶部。我可以单击并向下拖动滑块,但随后它会弹回到顶部。单击箭头(向上或向下)可正常工作。
我尝试在ttk中使用替代滚动条,但它并没有更好:
在这种情况下,滑块会填满整个条形,您无法快速向上或向下滚动任何方向。抓取和拖动工作(不知何故),列表框滚动但你没有视觉提示你有多接近顶部或底部。箭头(再次)正常工作。
简而言之,它是可用的,但只是非常奇怪和奇怪。所有这些只是在Windows操作系统上使用Python / Tkinter的已知限制吗? (我的机器有Windows XP(32位)和SP 3.它是Python版本2.7.3。)
答案 0 :(得分:4)
听起来您没有正确配置滚动条。你必须建立双向连接。您需要配置列表框以了解滚动条(以便更新拇指),并且您需要配置滚动条以了解列表框(以便滚动列表框的内容)。
你描述的行为让你觉得你忘了做前者。也许如果你告诉我们你的鳕鱼我们可以证实。你在做类似的事情吗?
my_listbox.configure(yscrollcommand=my_scrollbar.set)
my_scrollbar.configure(command=my_listbox.yview)