【发布时间】:2020-07-16 08:41:00
【问题描述】:
我想创建和销毁一个带有复选按钮的小部件。小部件将在检查按钮被选中时创建,并在取消选中检查按钮时被销毁。创建工作正常,但是当小部件应该被销毁时,将显示错误消息Error: window name "ser" already exists in parent。
package require Tk
wm title . "Some Test"
grid[ttk::frame .c -padding "3 3 12 12"] -column 0 -row 0 -sticky nwes
grid columnconfigure . 0 -weight 1; grid rowconfigure . 0 -weight 1
grid [ttk::checkbutton .c.checkSer -command createWidget \
-variable CB -onvalue 1 -offvalue 0] -column 1 -row 3 -sticky w
set CB 0
proc createWidget {} {
if {[catch {info exists $::ser} fid]} {
grid [ttk::entry .c.ser -width 12 -textvariable ser] -column 2 -row 2 -sticky we
grid [ttk::label .c.serlbl -text "Ser"] -column 1 -row 2 -sticky w
} else {
destroy .c.ser .c.serlbl
}
}
如何在没有此错误的情况下销毁小部件?
【问题讨论】: