아직 편집 가능한 팝업 상자를 만들려고하고 내가 해결할 수없는 나 자신에 대한 흥미로운 문제를 만들었습니다 "사용자가 기존 문자열을 편집 할 수있는 상자. 입력 상자에 문자열을 표시하면서 버튼을 누르면 팝업됩니다. 일단 사용자가 문자열을 편집하면 (또는하지 않은 경우) "OK"버튼을 클릭하면 스크립트가 새 문자열을 갖게됩니다. 세 개의 위젯으로 최상위 윈도우를 생성,이 새로운
버튼을 누른 경우 :
내 접근 방식은이 같은 것입니다
- 간단한 라벨 "편집 문자열, 확인을 눌러 완료";
- 사전 정의 된 문자열을 포함하는 편집 가능한 항목.
- 눌렀을 때 최상위 창을 삭제하는 "확인"버튼.
나는 일종의 일을하고 있지만 편집 된 문자열을 얻는 방법을 알아낼 수는 없습니다.
"이벤트 중심"용어로 생각하지 않는다는 것이 근본적인 문제라는 것을 알고 있습니다. 이것은 쉽게 할 수 있어야하지만이 시점에서 나는 숲을 볼 수없는 것 같습니다.
무엇이 누락 되었습니까? 나는 이것을 복잡하게 끝내야합니까? 이 라인에서
#!/usr/bin/wish
# Create the Pop-up box
proc popUpEntry { labelString } {
global myString
puts "POP:myString = $myString"
set top [toplevel .top]
set labelPop [label $top.labelPop -text $labelString ]
set entryPop [entry $top.entryPop -bg white -width 20 -textvar $myString ]
set buttonPop [button $top.buttonPop -text "Ok" -command { destroy .top } ]
pack $labelPop
pack $entryPop
pack $buttonPop
}
# Pop-up command
proc DoPop {} {
global myString
set popUpLabel "Edit string, press ok when done:"
puts "Before: myString = $myString"
popUpEntry $popUpLabel
puts "After: myString = $myString"
}
# Initalize
set myString "String at start"
# Pop-up button invokes the pop-up command
set buttonPop [button .buttonPop -width 10 -text "Pop" -command {DoPop} ]
pack $buttonPop
#
아. 사실 이후에 분명합니다. 감사! – user1074069