如何在 tcl/tk 中将元素扩展为小部件文本?

问题描述 投票:0回答:1

在这个例子中,我想扩展“框架”元素,使其成为接收它的文本组件的大小。

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”属性语法。有什么解决办法吗?

tcl tk-toolkit geometry-management
1个回答
0
投票

文本小部件(如画布小部件)不管理您嵌入其中的小部件的大小(它设置它们的位置)。如果您希望使内部框架小部件的大小响应外部文本小部件的大小,您需要在文本小部件上添加

<Configure>
绑定,并在发生这种情况时更改内部小部件的大小。

例如:

bind $frame <Configure> {
    %W.pnl configure -width [expr {%w - 5}] -height [expr {%h - 5}]
}

您还需要关闭

$panel
的(向外)几何传播,因为您不希望面板的大小由其内容决定。

pack propagate $panel 0
© www.soinside.com 2019 - 2024. All rights reserved.