2010-01-16 2 views
0

다음 Tcl 스크립트에서 입력 위젯이 입력을 허용하지 않습니다. 나타나지만 응답이 없습니다.Tcl/Tk 초기화 스크립트에서 tk_messageBox에 문제가 발생했습니다.

pack [entry .a] -padx 15 -pady 15 
tk_messageBox -message {test} 

tk_messageBox 행을 주석 처리하면 항목 위젯이 올바르게 작동합니다. 이 동작의 원인은 무엇이며 어떻게 수정합니까?

Windows에서 Tcl/Tk 8.5.2를 사용하고 있습니다.

분명히하기 위해, 내 문제는 입력 상자가 메시지 상자가 해제 된 후 끊어진 것입니다. 입력 상자는 포커스/입력을 허용하지 않으며 캐럿을 표시하지 않습니다. 필자는 Windows XP 및 Vista에서 직접 테스트 한 Tcl/Tk와 Equi4의 tclkit을 사용하여 테스트했습니다. 각각의 경우 초기화 스크립트에 메시지 상자가 표시되면 항목이 작동하지 않습니다.

편집 : 한 가지 더. 이 "버그"는 코드가 대화 형 콘솔로 입력되면 존재하지 않습니다. 코드가 파일에 있고 파일 이름이 인수로 명령 줄에서 호출 될 때만 실패하는 것으로 보입니다.

+0

메시지 상자를 닫으면 항목 위젯이 깨집니다. – Imbue

답변

0

분명히 Tk의 버그입니다.

간단한 수정 초기화 스크립트 코드의 첫 번째 라인으로

update idletasks 

을 넣어하는 것입니다.

0

메시지 상자는 모달입니다. 즉, 닫힐 때까지 입력 포커스를 캡처합니다. 앱이 열려있는 동안 응답 성을 유지하려면 다른 방법으로 메시지를 표시해야합니다.

+0

아니요, 입력란 위젯을 닫은 후에도 입력 위젯이 깨졌습니다. – Imbue

+0

나를 위해 잘 작동, WinXP에서 8.5.1을 사용하여 –

+0

오, 그 경우에는, 나도 무슨 일인지 모르겠다. 동일한 버전의 Tcl/Tk를 사용하는 리눅스에서는 모달이며 입력 창은 사라지면 제대로 작동합니다. –

0

일반적인 초점 문제와 같습니다. 나는 내 시스템에서 테스트 한 및 다음 스크립트는 잘 작동하는 것 같다 : 당신은 문제의 유형을 보낼 때마다

pack [entry .a] -padx 15 -pady 15 
tk_messageBox -message {test} focus 
focus -force .a 

포커스가 없어 질 수 있다고 생각하고 당신이 그것을 복구 할 필요가있다. focus와 grab 명령을 모두 확인하십시오.

희망이 있습니다.

0

Windows XP에서 tclkit 8.5.8을 사용하여 3 라인 tcl/tk 예제를 시도했지만 예상대로 작동했습니다. tk 8.x는 점점 더 많은 Windows 기본 위젯을 사용하고 있으며, 이들과 tk만의 위젯 간의 상호 작용은 때로는 어려울 수 있음을 기억하십시오.