Как установить максимальный размер ScrolledWindow в BWidget? - PullRequest
0 голосов
/ 26 декабря 2010

Я использую BWidget ScrolledWindow в коде, подобном этому:

toplevel .top
set w [ScrolledWindow .top.scrolledWindow]
set f [ScrollableFrame $w.scrollableFrame -constrainedwidth true]
$w setwidget $f
set a [$f getframe]
# here goes some stuff in $a

Итак, я получаю окно с вертикальной полосой прокрутки.При увеличении высоты .top через некоторое время все содержимое в $a становится видимым, и полоса прокрутки исчезает, поскольку она больше не нужна.Как я могу запретить дальнейшее увеличение высоты .top?т.е. мне нужно установить максимальную высоту .top равной значению, когда все содержимое $ a является видимым.Как я могу это сделать?

1 Ответ

1 голос
/ 26 декабря 2010

Чтобы установить максимальную высоту верхнего уровня, вы используете wm maxsize, возможно, с очень большим значением для горизонтального размера.Чтобы получить его текущий размер, вы используете winfo heightwinfo width в другом измерении).Сочетая их:

# 10k is just a "big" number
wm maxsize .top 10000 [winfo height .top]

Теперь хитрый момент с BWidget заключается в том, что он не устанавливает размер окна сразу или даже при первом отображении.Это означает, что вы должны указать, когда настраивать окно.Дешевая вещь, которую стоит попробовать - это поставить ее на полсекунды в будущем;в конце концов, даже опытные пользователи, скорее всего, потратят хотя бы немного времени, прежде чем взаимодействовать с ним.Это сделано с after, например:

# 500 milliseconds in the future
after 500 {
    # 10k is just a "big" number
    wm maxsize .top 10000 [winfo height .top]
}
...