我使用了5个单选按钮,当调用它时,它会创建特定于每个按钮的新窗口小部件。但是,一旦创建了小部件,就不能使用相同的路径名创建相同的小部件,否则就会显示错误。单选按钮可以多次单击,这会导致前面提到的错误。是否有限制连续两次按下同一单选按钮或阻止重新创建窗口的方法?
使用[winfo exists]
。像这样的东西:
radiobutton .r1 -text 1 -value 1 -variable radiovalue -command make_widget
radiobutton .r2 -text 2 -value 2 -variable radiovalue -command make_widget
pack .r1 .r2
proc make_widget {} {
global radiovalue
set name .widget_$radiovalue
if {[winfo exists $name]} {
puts "$name already exists"
} else {
pack [label $name -text $name]
}
}
您可以禁用按下的单选按钮,直到按下另一个按钮,或者您可以在创建任何窗口小部件之前删除现有的窗口小部件集(如果有的话)。