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

일반적인 GUI 질문

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

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

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

Tkinter 질문

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

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

한 가지 해결책은 응용 프로그램을 Tcl과 Tk 라이브러리와 함께 제공하고, 그것들을 실행 시간에 TCL_LIBRARYTK_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 옵션을 보십시오).