Tcl 忘记小部件后,添加“给”;已经存在';
我希望在运行时在ttk::notebook中添加/删除选项卡。所以,我做了这个:Tcl 忘记小部件后,添加“给”;已经存在';,tcl,tk,Tcl,Tk,我希望在运行时在ttk::notebook中添加/删除选项卡。所以,我做了这个: ttk::notebook .nb proc add_tab {} { set tab_cnt [.nb index end] .nb add [frame .nb.fr$tab_cnt] } proc del_tab {} { set tab_no [expr [.nb index end] - 1] .nb forget .nb.fr$tab_no } 删除已完成,但在删除后添加新选项卡将
ttk::notebook .nb
proc add_tab {} {
set tab_cnt [.nb index end]
.nb add [frame .nb.fr$tab_cnt]
}
proc del_tab {} {
set tab_no [expr [.nb index end] - 1]
.nb forget .nb.fr$tab_no
}
删除已完成,但在删除后添加新选项卡将生成消息
window name "fr0" already exists in parent
如何正确删除选项卡和框架(或其他小部件,如果已添加到选项卡)?当您从父容器中忘记小部件时,小部件仍然存在,并且名称仍在使用中;它只是没有显示在屏幕上,它没有映射。要释放名称以便再次使用,需要
销毁该小部件
也就是说,而不是:
.nb forget .nb.fr$tab_no
这样做:
destroy .nb.fr$tab_no
(销毁小部件也会使其容器忘记它;Tk会自动为您处理它。)您必须感谢!这就是我想要的。