place 是通过指定widget的大小和位置来直接布局。
button .b -text "Ha Ha" place .b -x 10 -y 20 -width 100 -height 50 # 使用相对大小和相对位置 place .b -relx 0.3 -rely 0.2 -relwidth 0.8 -relheight 0.6
这种布局方法思路最直接,却需要用户进行相对较多的计算。尤其是绝对位置的布局不利于描述widget的相对位置,以及组件的自适应布局。下面的"pack"和"grid"布局在这方面则要方便不少。
但利用绝对定位理论上可以做出任何布局;利用相对定位可以在一个widget内部放置另一个或几个组件。
pack 布局管理器的算法:
在细节上,可以通过"-padx" "-pady" "-ipadx" "-pady"来调整widget之间的边距。
button .b -text "Ha Ha" text .t pack .b -side top -fill x pack .t -side top -fill both -expand 1
grid是按照行和列来放置widget,比较适合需要对齐widget的情况。
grid的使用相对复杂一些。
grid .b -row 1 -column 2 -columnspan 2
如果两个组件在屏幕上的位置有重复的话,层次在上人组件会覆盖下面的组件。
默认情况下,后创建的组件相对层次较高。
下面两个命令用于调整widget的层次。
raise .b lower .b