1

我正在实现具有以下功能的条目和按钮。单击按钮时,我将获得一个检查按钮列表。选择复选按钮后,它们应该会反映在条目中。以下是我的实现。我不喜欢的一件事是将条目 ( .e) 传递给get_valuesand myok。我的问题有更好的解决方案吗?

entry  .e -width 15 -relief sunken
button .b -text "..." -command [list get_values .e]
pack .e .b -side left

proc get_values { entry } {
  toplevel .values

  checkbutton .values.c1 -text "C1" -variable c1
  checkbutton .values.c2 -text "C2" -variable c2
  button .values.ok -text "OK" -command [list myok $entry .values]
  button .values.cancel -text "Cancel" -command [list mycancel .values]

  pack .values.c1 .values.c2 -side top
  pack .values.cancel .values.ok -side right
}

proc myok { entry warg } {
 variable c1
 variable c2

 $entry delete 0 end

 if { $c1 } {
  $entry insert insert " "
  $entry insert insert "c1"
 }

 if { $c2 } {
  $entry insert insert " "
  $entry insert insert "c2"
 }

 destroy $warg
}

proc mycancel { warg } {
 destroy $warg
}
4

1 回答 1

3

您可以将变量与条目相关联并将其用于条目文本更新。

entry  .e -width 15 -relief sunken -textvariable e

(无论何时更改变量e,条目都会相应更新)

但是在这种情况下,如果要实现通用get_valuesmyok函数,则必须传递关联变量的名称而不是入口实例的名称。如果该条目是唯一的,那么您当然可以硬编码名称而不是传递。

无论如何,我在您的实施中没有看到任何错误。

于 2011-08-03T16:21:43.690 回答