检索 tcl/tk 应用程序布局结构

Retrieving a tcl/tk application layout structure

有没有办法从 tcl/tk 应用程序中检索 GUI 布局的树结构?我正在尝试检索屏幕布局,以便将其转换为 html/electron 应用程序。

有什么建议就好了。

可以使用winfo children和基本递归得到widget层级的基本结构:

proc dumpStructure {{w .} {indent ""}} {
    puts "$indent[winfo class $w] $w"
    foreach configItem [$w configure] {
        lassign $configItem name - - def value
        if {$def ne $value && $name ne "-command"} {
            # Note: we've excluded things that are set to the default and
            # also the -command callbacks because they usually look messy
            puts "$indent    $name $value"
        }
    }
    foreach child [winfo children $w] {
        dumpStructure $child "$indent  "
    }
}

请注意如何使用每个小部件的 configure 方法来获取有关其设置方式的所有信息,除了 textcanvas 小部件要复杂得多。 (如果找不到可接受的替代方案,您可能需要重新开发它们。)几何管理配置比较棘手,因为几何管理器没有那么多通用代码(并且 textcanvas在这方面特殊,但其他一些也是如此)。

菜单是它们自己的特例,但在实践中可能很容易映射。