tcl/tk按钮或顶级路径名约定

tcl/tk按钮或顶级路径名约定,tcl,tk,Tcl,Tk,在TK中创建新的顶层或按钮时,需要输入路径名。 我看到了一个基本代码,它看起来像: toplevel .a ... button .a.b ... 我的问题是: 点和字母的处理方式不同吗?它们是创建父子关系的某种层次分隔符吗?我看过维基TK,但没有找到答案。 非常感谢,, -是的,他们是!例如,它们将具有小部件内容的框架分隔开: set f [frame .hello] button $f.b -text "Hello button" pack $f.b pack $f 正如您在本例中看

在TK中创建新的顶层或按钮时,需要输入路径名。 我看到了一个基本代码,它看起来像:

toplevel .a
...
button .a.b ...
我的问题是: 点和字母的处理方式不同吗?它们是创建父子关系的某种层次分隔符吗?我看过维基TK,但没有找到答案。 非常感谢,,
-是的,他们是!例如,它们将具有小部件内容的框架分隔开:

set f [frame .hello]
button $f.b -text "Hello button"

pack $f.b

pack $f
正如您在本例中看到的,f作为变量计算,而不是f.b


您也可以编写pack${f}.b,但不需要这样做,因为点不属于变量。

是-它用于层次结构。看看这个主题:

该框架是根的子框架,名为“.c”。我们可以用几乎任何东西来代替“c”,例如命名为“.content”。此名称纯粹供您的程序使用,因此最好选择有意义的名称。作为框架子控件的控件被命名为“.c.feet”、“.c.meters”、“.c.flbl”等。如果在层次结构的更深层有任何小部件,我们会添加另一个“.”,然后添加一个唯一标识符


正如其他答案所说,点用于表示层次结构,就像/或\用于表示文件系统层次结构一样

严格来说,将小部件放置在层次结构中并不是必要的。这样做的一个优点是,几何体管理器(如栅格和块)默认用于管理其父对象中的子对象。例如,“pack.a.b.c”将小部件a.b.c打包到小部件a.b.c中。这使得做简单的布局变得容易

在许多情况下,通过告诉grid和pack孩子应该放在哪个容器中,也可以达到同样的效果。例如,“pack.c-in.a.b”将把widget.c放入容器中。这样可以使层次结构保持浅层次,并使重构变得更容易


有关tk基础知识的详细介绍,请参阅。

谢谢。有没有与示例相关的链接?这个示例我想不出来,但请看@skilldrick对所述理论的回答。顺便说一句,关于Tcl/tk的最优秀的书是Brent Welch在Tcl和tk中的实用编程@布莱恩·奥克利在下面的回答中也提到了它。说得好,布莱恩。重构的另一个影响是许多人习惯于将小部件名称保存在变量中;除其他效果外,这提供了一个重写复杂序列的机会,只需在开始处添加一个“设置我的顶级名称。一些新内容”。