在这个例子中,我想扩展“框架”元素,使其成为接收它的文本组件的大小。
package require Tk
wm withdraw .
toplevel .top
pack [frame .top.frm] -side top -anchor center -ipadx 100 -ipady 100
set frame .top.frm.txt
pack [text $frame] -side top -anchor center
set panel [frame $frame.pnl]
pack [button $panel.btn -text button] -side top -anchor nw
pack [label $panel.lbl -text label] -side top -anchor nw
$frame window create end -window $panel
从语义上或更确切地说,这种模式不接受“-Expand True”属性语法。有什么解决办法吗?
文本小部件(如画布小部件)不管理您嵌入其中的小部件的大小(它设置它们的位置)。如果您希望使内部框架小部件的大小响应外部文本小部件的大小,您需要在文本小部件上添加
<Configure>
绑定,并在发生这种情况时更改内部小部件的大小。
例如:
bind $frame <Configure> {
%W.pnl configure -width [expr {%w - 5}] -height [expr {%h - 5}]
}
您还需要关闭
$panel
的(向外)几何传播,因为您不希望面板的大小由其内容决定。
pack propagate $panel 0