Tk窗口布局,小部件大小最大化

时间:2014-11-18 11:03:03

标签: tcl tk

我正在尝试使用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
} 

1 个答案:

答案 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

文档:gridpackwm