我正在尝试使用TK包在tcl中创建一个窗口。
该窗口由4个文本小部件和一个菜单栏组成。
(像这样:http://artafact.be/sites/default/files/window.png)
但我希望窗口最大化到屏幕上。
我尝试通过以下方式执行此操作:
set widthsmall [expr {int([winfo screenwidth .] * 0.25)}]
....
text .main \
-width $widthsmall -height $heightbig \
但这会给结果一个比屏幕更宽的窗口!
这怎么可能?
proc buildUI {} {
global widthsmall
global widthbig
global heightsmall
global heightbig
frame .toolbar
scrollbar .vsb -command [list .main yview]
text .main \
-width $widthsmall -height $heightbig \
-yscrollcommand [list .vsb set] \
-highlightthickness 0
scrollbar .vsb1 -command [list .test yview]
text .test \
-width $widthbig -height $heightbig \
-yscrollcommand [list .vsb1 set] \
-highlightthickness 0
scrollbar .vsb2 -command [list .tsvf yview]
text .tsvf \
-width $widthsmall -height $heightsmall \
-yscrollcommand [list .vsb2 set] \
-highlightthickness 0
scrollbar .vsb3 -command [list .tobsw yview]
text .tobsw \
-width $widthbig -height $heightsmall \
-yscrollcommand [list .vsb3 set] \
-highlightthickness 0
button .b -text start -command start_sim
pack .b -in .toolbar -side left
grid .toolbar -sticky nsew -column 0 -row 0 -columnspan 2
grid .main .vsb -sticky nsew -column 0 -row 1
grid .test .vsb1 -sticky nsew -column 1 -row 1
grid .tsvf .vsb2 -sticky nsew -column 0 -row 2
grid .tobsw .vsb3 -sticky nsew -column 1 -row 2
}
答案 0 :(得分:1)
要最大化名称在变量win
中的窗口,请使用
wm state $win zoomed
在Windows和Mac OS X上,或
wm attributes $win -zoomed 1
在X11系统上。
要使窗口内的窗口小部件展开以匹配增加的窗口大小,请配置几何管理器以进行扩展。
pack .mywidget -expand 1 -fill both ;# grow in both x and y
pack .mywidget -expand 1 -fill x ;# grow in x
pack .mywidget -expand 1 -fill y ;# grow in y
grid rowconfigure . .mywidget -weight 1 ;# this row will expand
grid columnconfigure . .mywidget -weight 1 ;# this column will expand