将现有帧移动到新帧并使用旧名称创建新帧

时间:2011-09-22 14:30:30

标签: user-interface tcl tk

我在tcl中使用了一个名为frame1的框架,还有其他框架。 现在我设置一个proc来销毁所有这些帧。我想要做的是将这些帧移动到一个新的变量并创建相同名称的新帧。 我的代码看起来像这样:

proc DestroyAll {} {
    global parent_widget
    global new_widget
    destroy .sf.frame.main.xName
    for {set i 0} {$i < $Count} {incr i} {
        destroy .sf.frame.main.parameter($i)
    }
    destroy .sf.frame.main.buttons
    destroy .sf.frame.buttons
    destroy .sf.frame.main
    destroy .sf.frame
    destroy .sf
}

Populatenewdata ---&gt;&gt;这个proc创建并填充了sf框架 我不想破坏这些帧,但我想创建新的帧。有没有办法这样做,因为这个帧的填充过程非常冗长,不能使用循环完成。

1 个答案:

答案 0 :(得分:2)

Tk不允许你重新使用小部件;从你创造它们的那一刻到你摧毁它们的那一刻,它们的名字是固定的。 (您可以将直观显示在不同的小部件中,并使用适当的-in选项显示packgrid,但这是严格的视觉效果。)

是否可以更好地管理模型备份小部件,以便您可以轻松地在该模型上重新创建视图? (答案取决于正在使用的小部件 - 重新创建canvastext小部件并不是一件容易的事,尽管使用text可以将其从8.5开始克隆 - 但它通常是公平的很容易。)重新思考你在MVC方面做得更强的事情会有所帮助。