0

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 のすべてのコンテンツが表示されるときの値に最大の高さを設定する必要があります。どうやってやるの ?

4

1 に答える 1

1

トップレベルの最大の高さを設定するにはwm maxsize、おそらく非常に大きな水平サイズの値を使用します。現在のサイズを取得するには、winfo height(およびwinfo width他の次元で)を使用します。これらを組み合わせる:

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

ここで、BWidget のトリッキーな点は、ウィンドウのサイズがすぐには設定されず、最初の表示でも設定されないことです。これは、いつウィンドウを構成するかを推測する必要があることを意味します。試してみる安上がりな方法は、0.5 秒先に設定することです。結局のところ、熟練したユーザーでさえ、それを操作する前に、少なくとも少しは見ている可能性があります。それは次の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 に答える