最初に高さの25%を占め、次は高さの75%を占める2つのテキストボックスを1つ作成します。Tcl/tk - グリッドのウィンドウの高さと幅を取得し、相対的なテキストの高さを設定します。
toplevel winの相対的な高さと幅を計算してテキストコマンドに渡そうとしましたが、動作しませんでした(wmジオメトリによって返される次元の単位がテキストコマンドに渡されたときと同じではないためです)
後に私のコードです:
toplevel .t
wm geometry .t 1500x800+10+10
update
proc topAspect {args} {
regexp {(\d+)} $args -> relAspect
regexp {([^\d|%]+)} $args -> aspect
regexp {(.*)x(.*)[+-](.*)[+-](.*)} [wm geometry .t] -> width height x y
puts "width->$width height->$height x->$x y->$y"
switch -regexp [string tolower $aspect] {
x {
return [expr $x + $relAspect]
}
y {
return [expr $y + $relAspect]
}
w {
return [expr $width * $relAspect/100]
}
h {
return [expr $height * $relAspect/100]
}
default {
log::log error "Unsupported relative aspect $aspect cannot be determined for top level window"
}
}
}
text .t.text1 -height [topAspect -width 25%] -width [topAspect -width 99%]
grid .t.text1 -sticky news
text .t.text2 -height [topAspect -width 75%] -width [topAspect -width 99%]
grid .t.text2 -sticky news
私は、次の試したとき - それは私にいくつかのまともなGUI与えました:
text .t.text1 -height 20 -width [topAspect -width 99%]
grid .t.text1 -sticky news
text .t.text2 -height 20 -width [topAspect -width 99%]
grid .t.text2 -sticky news
をしかし、私はrelatiを使用したいですveオプション。それを動作させるには?
ケアは、マルチモニタセットアップで負のオフセットを持つことができるよう、ジオメトリの出力を解析取られる必要があります。例:鉱山では '200x200 + -638 + 77'です。だから、正確に解析する 'scan'ステートメントは、ネガを扱うことができる' [scan $ geometry "%dx%d +%d +%d"] 'です。 – patthoyts
訂正ありがとう、私はフォーマットのドキュメントを誤解しました。しかし、私の現在の理解から、プレフィックスは+だけでなく、可能であれば数字の符号が続く可能性があります。もしそうなら、 '{%dx%d%* 1 [+ - ]%d%* 1 [+ - ]%d}'または正規表現 '{(\ d +)x(\ d + )[+ - ]?\ d +)[+ - ]([+ - ]?\ d +)} 'となります。 –
形式WxH-X + Y(Xオフセットの先頭にマイナス記号を使用するのは、画面の右端からの位置を示すためです) - tkWinWm.cのWM_NEGATIVE_Xのコメントを参照してください。潜在的に '1x1- -2 + 3 '正規表現が必要なように見える – patthoyts