我想在运行时在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
}
已完成删除,但删除后添加新标签会生成消息
window name "fr0" already exists in parent
如何正确删除制表符和框架(或其他窗口小部件,如果它已添加到选项卡中)?
答案 0 :(得分:1)
当您从其父容器中forget
窗口小部件时,窗口小部件仍然存在且名称仍在使用中;它只是没有出现在屏幕上,它不是映射。要释放名称以便再次使用,您需要destroy
小部件。
即代替:
.nb forget .nb.fr$tab_no
这样做:
destroy .nb.fr$tab_no
(销毁小部件会使其容器忘记它;这是由Tk自动处理的。)