呼び出し元の名前空間から変数にアクセス、読み取り、変更できるプロシージャが必要です。変数は と呼ばれ_current_selection
ます。いくつかの異なる方法を使用してそれを実行しようとしましupvar
たが、何も機能しませんでした。upvar
(メカニズムをテストするためだけに小さなテスト proc を作成しました)。これが私の試みです:
proc の呼び出し:
select_shape $this _current_selection
プロセス:
proc select_shape {main_gui var_name} {
upvar $var_name curr_sel
puts " previously changed: $curr_sel"
set curr_sel [$curr_sel + 1]
}
私の2回目の試みでは:
proc の呼び出し:
select_shape $this
プロセス:
proc select_shape {main_gui} {
upvar _current_selection curr_sel
puts " previously changed: $curr_sel"
set curr_sel [$curr_sel + 1]
}
すべての試みで、コードのこの領域に到達すると、can't read "curr_sel": no such variable
私は何を間違っていますか?
編集:
関数の呼び出しは、bind
コマンドから行われます。
$this/zinc bind current <Button-1> [list select_shape $this _current_selection]
最初は関係ないと思っていました。しかし、多分そうです。