Tcl / Tk:输入按钮 - 在不通过条目的情况下将值输入到条目中

时间:2011-08-03 15:48:35

标签: button tcl tk tkentry

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

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
}

1 个答案:

答案 0 :(得分:3)

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

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

(每当更改变量e时,条目将相应更新)

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

无论如何,我认为你的实施没有任何错误。