0

我在这样的代码中使用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 的所有内容可见时,我需要将最大高度设置为该值。我怎样才能做到这一点 ?

4

1 回答 1

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]
}
于 2010-12-26T11:12:11.147 回答