2011-12-17 4 views
4

폼에 두 개의 단추가 있고 버튼을 누르면 눌려진 상태로 유지되고 button1이 끝날 때까지 프레임이 응답하지 않는 상태로 유지됩니다. 제 경우에는 열어 둔 상태로있는 새 xterm 창을 호출합니다. button2 새로운 xterm을 열고 싶지만 button1 명령에서 xterm 창을 닫을 때까지 전체 GUI가 응답하지 않습니다. 왜 그럴까요? 감사합니다. TKinter를 2 일 전에 사용하기 시작 했으므로 쉽게 이동하십시오.Python TKinter 여러 작업

답변

4

Tkinter는 단일 스레드에서 작동합니다. 단추를 누르면 콜백 명령이 오랫동안 돌아 오지 않는 것 같습니다. 이렇게하면 콜백 명령이 돌아올 때까지 Tkinter GUI가 멈추게됩니다.

가능하면 해결 방법은 콜백 명령을 더 작은 조각 (아마도 루프)으로 분할하고 update_idletasks()을 자주 호출하여 Tkinter GUI를 업데이트 할 수있게하는 것입니다.

그럴 수 없다면, 콜백 명령은 spawn a thread이어야하며, 실행은 Tkinter 메인 이벤트 루프를 차단하지 않습니다.

+0

답변 해 주셔서 감사합니다. 링크 :) –