그래픽 사용자 인터페이스 FAQ
****************************


일반적인 GUI 질문
=================


파이썬에 어떤 GUI 툴킷이 있습니까?
==================================

파이썬의 표준 빌드에는 Tcl/Tk 위젯 집합에 대한 객체 지향 인터페이스가
포함되는데, tkinter라고 불립니다. 이것이 아마도 가장 (파이썬의 대부분
바이너리 배포에 포함되어 있으므로) 설치하고 사용하기 쉽습니다. 소스에
대한 안내를 포함하는 Tk에 대한 자세한 내용은 Tcl/Tk 홈페이지를 참조하
십시오. Tcl/Tk는 맥 OS, 윈도우 및 유닉스 플랫폼에 완벽하게 호환됩니다.

여러분이 목표로 하는 플랫폼에 따라, 몇 가지 대안이 있습니다. 크로스 플
랫폼 및 플랫폼 특정 GUI 프레임워크의 목록을 파이썬 위키에서 확인할 수
있습니다.


Tkinter 질문
============


Tkinter 응용 프로그램을 어떻게 고정(freeze)합니까?
--------------------------------------------------

Freeze는 독립 실행형 응용 프로그램을 만드는 도구입니다. Tkinter 응용
프로그램을 고정할 때, 응용 프로그램은 여전히 Tcl과 Tk 라이브러리가 필
요하므로 진정한 독립 실행형이 아닙니다.

한 가지 해결책은 응용 프로그램을 Tcl과 Tk 라이브러리와 함께 제공하고,
그것들을 실행 시간에 "TCL_LIBRARY"와 "TK_LIBRARY" 환경 변수를 사용하여
가리키는 것입니다.

Various third-party freeze libraries such as py2exe and cx_Freeze have
handling for Tkinter applications built-in.


I/O를 기다리는 동안 Tk 이벤트를 처리하도록 할 수 있습니까?
----------------------------------------------------------

윈도우 이외의 다른 플랫폼에서라면, 그렇습니다, 그리고 스레드가 필요하
지도 않습니다! 그러나 I/O 코드를 약간 재구성해야 합니다. Tk는 Xt의
"XtAddInput()" 호출과 동등한 것을 갖고 있는데, 파일 기술자에서 I/O가
가능할 때 Tk 메인 루프에서 호출할 콜백 함수를 등록할 수 있도록 합니다.
파일 처리기를 참조하십시오.


Tkinter에서 키 바인딩이 동작하지 않습니다: 이유가 무엇입니까?
-------------------------------------------------------------

자주 들리는 불만은 적절한 키를 눌러도 "bind()" 메서드로 이벤트에 연결
된 이벤트 처리기가 처리되지 않는다는 것입니다.

가장 흔한 원인은 바인딩이 적용되는 위젯에 "키보드 포커스"가 없는 것입
니다. focus 명령에 대한 Tk 설명서를 확인하십시오. 보통 위젯은 그것을
클릭할 때 키보드 포커스를 받습니다 (레이블은 그렇지 않습니다;
takefocus 옵션을 보십시오).
