2

エントリのテキスト入力を検証しようとしています。

entry $w.e -validate key -vcmd "entryChanged $w.l $w.e"

次のコールバックを定義しています。

proc entryChanged {l e} {
    puts [$e get]
    return 1
}

問題は、検証後まで新しい値が設定されないため、 get がエントリの以前の値を返すことです。私の質問は、新しい値にアクセスするにはどうすればよいですか? (検証する値) と関係があると思いますが-textvariable、これに関するドキュメントはあまり見つかりません。

4

1 に答える 1

5

entryドキュメントの Validation セクションをよく読んでください。たとえば、これを試してください

... -vcmd {entryChanged  %W %s %P}

proc entryChanged {widget_name old_value new_value} {
    puts "widget name = $widget_name"
    puts "previous value = $old_value"
    puts "edited value = $new_value"
    return true
}
于 2012-04-29T00:31:40.533 に答える