스레드에 Tk를 표시해야합니다. 스레드 패키지에만 기본적으로 종속 스레드에 있습니다 :
thread::create {
package require Tk
while [tk_messageBox -message "Do you want to Exit?!!" -type yesno] {
doSomething
}
}
또한 코드에서 다른 문제를 해결해야합니다.
- 항상는
{
중괄호 }
에 while
의 상태를했습니다. 이를 사용하지 않으면 표현식의 동적 부분은 한 번만 평가되며 while
을 사용하여 실제로 원하는 부분이 아닙니다.
- 스레드가
thread::wait
인지 확인하십시오. 프로세스 및 스레드 관리를 향상시킬 수 있습니다. 메시지 상자 루프를 완전히 다시 작성해야합니다.
이이 코드로 이어질 수 있습니다
thread::create {
package require Tk
proc periodicallyMaybeDoSomething {} {
if {[tk_messageBox -message "Do you want to Exit?!!" -type yesno]} {
thread::exit
}
doSomething
# pick a better delay maybe?
after 1 periodicallyMaybeDoSomething
}
after 1 periodicallyMaybeDoSomething
thread::wait
}
는 8.6을 사용하는 경우, 당신은 코드를보다 우아하게 코 루틴을 사용할 수 있습니다.
덕분에 DONAL이 - 시도가 잘 작동하지 않고 대화 상자를 열었지만 클릭에는이 표준 출력 " 을 실행하는 동안 "표준 출력 " 라는 채널을 찾을 수 없습니다" "라는 채널을 찾을 수 없습니다"내용에 오류 대화 상자를 보여 주었다 "해봐요을두고 (절차 "periodicallyMaybeDoSomething"라인 5) 어떻게 스레드 본체에 표준 출력을 참조하는 " (스크립트"후 ") 어떤 아이디어"periodicallyMaybeDoSomething " 내에서 호출 – BabyGroot