Tkinter入门
前页 | 第3章. Hello, Again | 后页

# 更多组件名称

另外容易引起混淆的地方,特别是对于有用Tck进行Tk编程经验的人, 是关于Tk的 widget 名称概念.在Tcl中,你必须明确的为每一个组件命名.例如,下面的例子是一个创建名为"ok"的Button的Tcl命令,

     button .dialog.ok

相应的Tkinter命令是:

     ok = Button(dialog)

然而,在Tkinter里, `ok` 和 `dialog` 是组件实例的引用, 不是组件的实际名称. 由于Tk需要属于它自己的名字, Tkinter会自动为每一个新组件起一个唯一的名字. 在上面的情况中, dialog 的名字也许会象".142723",button也会是".142723.143326"这样的名称.如果你希望得到一个Tkinter组件的全名,你可以简单的对一个组件使用 `str` 函数:

      >>> print str(ok)
          .1428748.1432920

(如果你打印什么东西, Python会自动使用 `str` 函数找出实际打印的内容,但是,显然,一个类似"name=ok"的操作不会如此,所以如果你需要得到一个名字,请明确的使用 `str` ).

如果你真的需要指定一个组件的名字,你可以在创建组件时使用 `name` 选项. 一个 (或者说是唯一) 这样作的理由,是你需要用Tcl代码写接口,而不会有其它什么好处.

在下面的例子里, 创建的组件被命名 " `.dialog.ok` " (或者, 如果你忘记 dialog 的名字, 它也会是这样 " `.1428748.ok` "):

     ok = Button(dialog, name="ok")

为了避免Tkinter的命名冲突, 请不要使用仅有数字的名字. 同样要注意, `name` 是一个 "只可创建" 选项; 你不能在创建组件之后改变它的名字.

前页 | 首页 | 后页
更多关于组件参考 | 向上 | Tkinter类