위젯 툴킷

위젯 툴킷(widget toolkit), 위젯 라이브러리(widget library), GUI 툴킷(GUI toolkit), GUI 프레임워크, UI 프레임워크 또는 UX 라이브러리는 프로그램의 그래픽 사용자 인터페이스(GUI)를 구성하는 데 사용되는 그래픽 제어 요소(위젯이라 불림) 세트를 포함하는 라이브러리 또는 라이브러리 모음이다.

대부분의 위젯 툴킷은 추가적으로 자체적인 렌더링 엔진을 포함한다. 이 엔진은 특정 운영체제나 윈도 시스템에 특화되어 있거나, 여러 시스템 및 OpenGL, OpenVG 또는 EGL과 같은 렌더링 API와 인터페이스할 수 있는 백엔드를 포함할 수 있다.
그래픽 제어 요소의 룩 앤드 필은 하드코딩되거나 분리될 수 있어, 그래픽 제어 요소의 테마/스킨을 입히는 것이 가능하다.

 개요 
섬네일|표준 위젯 툴킷을 사용하는 창
일부 툴킷은 언어 바인딩을 고용하여 다른 언어에서도 사용될 수 있다. 글레이드 인터페이스 디자이너와 같은 그래픽 사용자 인터페이스 빌더는 이 경우 GtkBuilder와 같은 사용자 인터페이스 마크업 언어를 고용하여 위지위그 방식으로 GUI 작성을 용이하게 한다.

프로그램의 GUI는 일반적으로 그래픽 제어 요소가 서로의 상단에 직접 추가되는 계층적인 방식으로 구성된다.

대부분의 위젯 툴킷은 상호작용의 모델로 사건 기반 프로그래밍을 사용한다.Past, Present and Future of User Interface Software Tools. Brad Myers, Scott E. Hudson, Randy Pausch, Y Pausch. ACM Transactions on Computer-Human Interaction, 2000.  툴킷은 사용자가 버튼을 클릭하는 것과 같은 사용자 이벤트를 처리한다. 이벤트가 감지되면 애플리케이션으로 전달되어 처리된다. 이러한 툴킷의 설계는 이벤트-액션의 지나치게 단순화된 모델을 조장하여, 프로그래머가 오류가 발생하기 쉽고 확장이 어려우며 과도하게 복잡한 애플리케이션 코드를 생성하게 만든다는 비판을 받아왔다. 유한 상태 기계와 계층적 상태 기계는 반응형 프로그램의 상호작용적 상태 변화를 나타내기 위한 상위 수준 모델로 제안되었다.

 윈도 시스템 
창은 그래픽 제어 요소의 하나로 간주된다. 일부 윈도 시스템에서 창은 창 관리자에 의해 신 그래프(캔버스)에 직접 추가되며, 다양한 수단을 통해 서로의 상단에 쌓이거나 레이어링될 수 있다. 각 창은 캔버스에 추가된 위젯을 제어하는 특정 애플리케이션과 연결되며, 관련 애플리케이션에 의해 감시되고 수정될 수 있다.

 같이 보기 
 표준 위젯 툴킷

 각주 


분류:그래픽 사용자 인터페이스