별도의 스레드에서 실행되는 tkinter 창에 대한 가상 이벤트를 생성해야합니다. non-gui 쓰레드에서 event_generate
을 호출하는 것은 안전 할 것으로 간주되며 tkinter가 주 쓰레드에서 실행되고 이벤트가 다른 쓰레드에서 생성 될 때 잘 동작합니다.새로운 스레드에서 tkinter가 실행될 때`event_generate` 사용
어떤 이유로 저는 이벤트를 생성하는 문장이 주 스레드에서 실행되어야합니다. (구체적으로 말하면 모듈의 최상위 레벨에 있어야합니다.)
그러나 새 스레드에서 root = Tk(); root.mainloop()
을 수행하고 주 스레드에서 root.event_generate("<<my-event>>")
을 수행하면 스택 오버플로가 발생합니다. 스레드 (주 스레드의 root = Tk(); root.mainloop()
및 새 스레드의 root.event_generate("<<my-event>>")
)를 바꿔 넣으면 모든 것이 다시 작동합니다.
이벤트를 생성하기 전에 루트가 완전히 구성되어 있는지 (유휴 상태인지)주의를 기울였습니다.
이 설정을 사용하는 방법에 대한 아이디어가 있으십니까? 메인 스레드에서 root = Tk()
을 유지 만 root.mainloop()
보조 스레드에 넣어 :
젠장, 리눅스와 OS X에서는 tkinter가 메인 스레드에서만 실행되어야한다 : http://stackoverflow.com/a/1835036/261181 – Aivar