I'm coding a GUI in Python/Tkinter that includes a listbox with a scrollbar. I've gotten the scrollbar operating as expected (i.e. you can click and it scrolls up/down through the listbox contents), but something's off with the way scrollbar itself behaves. The image below should help clarify.
The listbox is sized for 8 lines and contains only 12, so first off the slider should be a lot larger (2/3 of the scrollbar length). Second, whenever I scroll down (regardless of how I do it), the slider stays 'glued' to the top of the bar. This prevents me from ever using the upward fast-scroll method where you click above the slider but below the arrow -- so upward scrolling is limited to using the arrow and going one line at a time. A downward fast-scroll works fine, although as noted the slider still stays 'glued' to the top. I can click and drag the slider down, but then it pops right back up to the top. Clicking the arrows (either up or down) works normally.
I've tried using the alternative scrollbar in ttk, but it's not really any better:
In this case the slider fills the entire bar and you can't fast-scroll either direction, up or down. Grab-and-drag works (somehow), the listbox scrolls but you get no visual cue as to how close you are to the top or bottom. The arrows (again) work normally.
In short it's usable, but just very glitchy and weird. Is all this just a known limitation with using Python/Tkinter on Windows OS? (My machine has Windows XP (32-bit) with SP 3. It's Python version 2.7.3.)
It sounds like you aren't configuring your scrollbars correctly. You have to make a two way connection. You need to configure the listbox to know about the scrollbar (so that it updates the thumb) and you need to configure the scrollbar to know about the listbox (so that it scrolls the contents of tne listbox).
The behaviour you describe makes it sound like you forgot to do the former. Perhaps if you show us your cod we can confirm that. Are you doing something like the following?
my_listbox.configure(yscrollcommand=my_scrollbar.set)
my_scrollbar.configure(command=my_listbox.yview)