이 코드에서는 버튼을 누를 때 GUI가 정지됩니다. 이 문제는 스레드의 실행이 완료될 때까지 GUI의 메인 루프()를 차단하는 스레드의 Join() 사용에서 발생합니다.
Tkinter는 단일 스레드 GUI 라이브러리는 모든 GUI 작업이 메인 스레드에서 수행되어야 함을 의미합니다. Join()을 사용하여 스레드가 시작되면 스레드가 완료될 때까지 기본 스레드가 더 이상 코드를 실행하지 못하도록 차단합니다. 이로 인해 GUI가 응답하지 않거나 심지어 완전히 중단될 수도 있습니다.
멈추는 문제를 방지하려면 스레드 실행을 위해 비차단 방법을 사용하도록 코드를 수정해야 합니다. 이를 수행하는 한 가지 방법은 tkinter 위젯의 after() 메소드를 사용하여 지정된 지연 후에 함수가 실행되도록 예약하는 것입니다.
<code class="python">m = magic() def hello_callback(): m.add_item("asd") m.start_converting("test") # Schedule the function to be executed after 50 milliseconds top.after(50, hello_callback)</code>
이 코드에서는 hello_callback 함수가 실행되도록 예약되어 있습니다. 50밀리초 후. 이를 통해 스레드가 백그라운드에서 실행되는 동안 GUI가 사용자 입력에 계속 응답할 수 있습니다.
스레드 실행에 비차단 방법을 사용하면 GUI가 계속 응답하고 정지 문제가 해결되었습니다.
위 내용은 스레드에서 `join()`을 사용할 때 tkinter GUI가 정지되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!