2011-08-03 1 views
1

다음과 같은 기능을 가진 엔트리와 버튼을 구현 중입니다. 버튼을 클릭하면 확인 버튼 목록이 표시됩니다. 체크 버튼을 선택하면 항목에 반영됩니다. 다음은 나의 구현이다. 내가 좋아하지 않는 한가지는 get_valuesmyok에 엔트리 (.e)를 전달하는 것입니다. 내 문제에 대한 더 나은 해결책이 있습니까?Tcl/Tk : 엔트리 버튼 - 엔트리를 넘지 않고 값을 엔트리로 가져 오기

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 
} 

답변

3

변수를 항목과 연결하여 입력 텍스트 업데이트에 사용할 수 있습니다.

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

하지만 보편적 구현하려는 경우이 경우 당신이 항목 인스턴스의 이름 대신 관련 변수의 이름을 통과해야 (가변 e가 변경 될 때마다 항목이 이에 따라 업데이트됩니다) get_valuesmyok 기능 그 항목이 유일한 경우 원인의 원인을 전달하는 대신 이름을 하드 코드 할 수 있습니다.

어쨌든, 나는 귀하의 구현에 어떤 실수를 보지 못했습니다.