我在这样的代码中使用BWidget
的{{1}}:
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
的高度?即,当$ a的所有内容都可见时,我需要将.top
的最大高度设置为该值。我怎么能这样做?
答案 0 :(得分: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]
}