2017-02-23 3 views
0

파이썬/Tkinter 어플리케이션은 2-3 개의 시점에서 메인 화면을 30 초에서 수 분간 잠급니다. 많은 일을해야하기 때문에.사용자에게 파이썬이 Tkinter 어플리케이션 상태를 표시합니다.

나는 그 시점에서 작업 기간 동안 메인 화면을 잠그는 대신 응용 프로그램의 계산 집약적 인 부분을 백그라운드에서 분리 할 수 ​​있다면 더 세련된 응용 프로그램이 될 것이라고 생각했습니다. 메인 스레드, 그리고 무슨 일이 일어나고 있는지에 대한 사용자에게 어떤 종류의 피드백을 표시 할 수 있습니다 ... 그것이 모달 상태 창인지 또는 회전하는 고양이 애니메이션인지 여부

불행히도이 작업을 수행하는 데있어 깔끔한 방법은별로 없습니다.

답변

0

concurrent.futures, multiprocessing, threading을 조회하고 tkinter .after() 메서드를 사용할 수 있습니다. 최근 concurrent.futures을 사용하여 내 질문과 answer을 게시했습니다. Mark Summerfield의 저서에 설명 된 모델을 성공적으로 구현했으며 concurrent.futures을 사용해 보는 것이 좋습니다. threadingmultiprocessing에서 여전히 1 또는 2 개의 명령이 필요합니다. 제 코드가 잘 작동하고 tkinter에 대기 시간 문제가 없습니다. 참고 :이 작업 코드는 example code in my answer보다 자세합니다.이 코드는 파이썬 클래스를 사용하여 개별 파이썬 파일 대신 concurrent.future 코드를 호스팅 할 수 있음을 보여줍니다. 원하는 코딩 요구 사항을 찾으십시오.

질문에 대답하는 것과 관련된 최근 답변을 확인하십시오. .after()threadingexample. 다른 링크가 있습니다.

관련 문제