我在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框架 我不想破坏这些帧,但我想创建新的帧。有没有办法这样做,因为这个帧的填充过程非常冗长,不能使用循环完成。
答案 0 :(得分:2)
Tk不允许你重新使用小部件;从你创造它们的那一刻到你摧毁它们的那一刻,它们的名字是固定的。 (您可以将直观显示在不同的小部件中,并使用适当的-in
选项显示pack
和grid
,但这是严格的视觉效果。)
是否可以更好地管理模型备份小部件,以便您可以轻松地在该模型上重新创建视图? (答案取决于正在使用的小部件 - 重新创建canvas
或text
小部件并不是一件容易的事,尽管使用text
可以将其从8.5开始克隆 - 但它通常是公平的很容易。)重新思考你在MVC方面做得更强的事情会有所帮助。