使用网格时遇到tcl/tk程序故障

UNE*_*ECS 3 tk-toolkit tcl

我这样做的原因是因为我试图将窗口设置在屏幕的中心.我正在使用网格不打包,我已阅读有关使用wm grid但不了解如何设置它.我也不明白为什么. cget -width要回来0我认为格栅应该在没有给出选项时设置大小?

set width [. cget -width]
set height [. cget -height]
puts $height
puts $width
set x [expr { ( [winfo vrootwidth  .] - $width  ) / 2 }]
set y [expr { ( [winfo vrootheight .] - $height ) / 2 }]


wm title . "a3q2" 
wm geometry . ${width}x${height}+${x}+${y}
Run Code Online (Sandbox Code Playgroud)

这次我做错了什么?PS作业我不只是想要一个代码发布.谢谢

Eri*_*ski 5

[. cget -width][. cget -height]返回窗口的显式配置宽度/高度.对于Tk中的大多数小部件,您没有明确配置尺寸.相反,小部件具有基于小部件内容的"自然"宽度/高度.例如,标签的宽度/高度足以容纳其中的文本.顶层窗口足够大,可以容纳其中的所有小部件.

要获得窗口的实际尺寸,您应该使用[winfo width .][winfo height .].确保在窗口之后执行该操作并且其中的所有小部件都已映射(通常这意味着在[update]调用之前进行[winfo ...]调用).否则,几何管理器可能尚未更新窗口小部件/窗口的尺寸.