Python 2.7 PythonTk滚动条行为(Windows有责任吗?)

Python 2.7 PythonTk滚动条行为(Windows有责任吗?),python-2.7,windows-xp,tkinter,scrollbar,Python 2.7,Windows Xp,Tkinter,Scrollbar,我正在用Python/Tkinter编写一个GUI,其中包括一个带有滚动条的列表框。我已经让滚动条按预期运行(即,您可以单击并在列表框内容中上下滚动),但滚动条本身的行为方式出现了问题。下面的图片应该有助于澄清 listbox的大小为8行,只包含12行,因此首先滑块应该大得多(滚动条长度的2/3)。第二,每当我向下滚动(不管我怎么做),滑块都会“粘”在条的顶部。这使我无法使用向上快速滚动方法,即在滑块上方但在箭头下方单击,因此向上滚动仅限于使用箭头并一次滚动一行。向下快速滚动可以很好地工作,尽

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

listbox的大小为8行,只包含12行,因此首先滑块应该大得多(滚动条长度的2/3)。第二,每当我向下滚动(不管我怎么做),滑块都会“粘”在条的顶部。这使我无法使用向上快速滚动方法,即在滑块上方但在箭头下方单击,因此向上滚动仅限于使用箭头并一次滚动一行。向下快速滚动可以很好地工作,尽管如前所述,滑块仍然“粘”在顶部。我可以单击并向下拖动滑块,但它会立即弹出到顶部。单击箭头(向上或向下)可以正常工作

我曾尝试在ttk中使用替代滚动条,但实际上没有任何改进:

在这种情况下,滑块将填充整个条,您无法快速向上或向下滚动任一方向。抓取和拖动(不知何故)是有效的,列表框会滚动,但你看不到你离顶部或底部有多近。箭头(再次)正常工作


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

听起来你没有正确配置滚动条。你必须进行双向连接。您需要配置listbox以了解滚动条(以便它更新thumb),还需要配置scrollbar以了解listbox(以便它滚动listbox的内容)

你描述的行为听起来像是你忘了做前者。也许如果你给我们看一下你的cod,我们可以确认一下。你在做下面的事情吗

my_listbox.configure(yscrollcommand=my_scrollbar.set)
my_scrollbar.configure(command=my_listbox.yview)

听起来您没有正确配置滚动条。你必须进行双向连接。您需要配置listbox以了解滚动条(以便它更新thumb),还需要配置scrollbar以了解listbox(以便它滚动listbox的内容)

你描述的行为听起来像是你忘了做前者。也许如果你给我们看一下你的cod,我们可以确认一下。你在做下面的事情吗

my_listbox.configure(yscrollcommand=my_scrollbar.set)
my_scrollbar.configure(command=my_listbox.yview)

你能展示你的代码吗?(我知道在普通Tk中会出现什么问题:你必须同时配置widget的-yscroll命令和scrollbar的-command,忘记前者会得到与你描述的类似的结果。也许它也适用于tkinter)你和Bryan Oakley都解决了这个问题。我配置了滚动条的-命令,但没有配置listbox的-yscroll命令。您能显示代码吗?(我知道在普通Tk中会出现什么问题:你必须同时配置widget的-yscroll命令和scrollbar的-command,忘记前者会得到与你描述的类似的结果。也许它也适用于tkinter)你和Bryan Oakley都解决了这个问题。我配置了滚动条的-命令,但没有配置listbox的-yscroll命令。