Как установить максимальный размер ScrolledWindow от BWidget?
Я использую BWidget
"s 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 ответ
Чтобы установить максимальную высоту верхнего уровня, вы используете wm maxsize
возможно с очень большим значением для горизонтального размера. Чтобы получить текущий размер, вы используете winfo height
(а также winfo 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]
}