If a ScrollableFrame contains too many widgets, it does not display / scroll them correctly anymore. Either the frame does not scroll below a certain point (even if there would be more widgets), or - sometimes - widgets that should be placed towards the bottom of the frame, show up at the top.

This script demonstrates the issue:

<verbatim>
tclsh

package require Tk 8.6
package require BWidget 1.9.7

set widgetCount 200
set widgetHeight 20


# UI #
ScrollableFrame .sf
grid .sf -column 0 -row 0 -sticky nsew
grid columnconfigure . 0 -weight 1

# Scroll bindings #
bind . <Button-4> [list .sf yview scroll -1 unit]
bind . <Button-5> [list .sf yview scroll 1 unit]

grid rowconfigure . 0 -weight 1

# Create widgets #
for {set i 1} {$i <= $widgetCount} {incr i} {
    grid [label [.sf getframe].$i -text $i -height $widgetHeight]
}
</verbatim>

(run and try to  scroll to label #200)

Notes:

  *  If the problem does not reproduce, try increasing the 'widgetHeight' and / or 'widgetCount' vars.

  *  The key factor seems to be the total height of widgets in the frame and not their number. i.e. the same effect could be reproduced with less widgets, if they are higher.