13. X Window System (X for short)
● 1984년 MIT의 Jim Gettys, Bob Scheifler에 의해 X Window System 개발
● 1987년 X Version 11 (X11) 릴리즈
● Linux, Unix-like 시스템의Windowing system
● Window라고 불리는영역을화면에생성하는역할
● Window를 위한 Mouse, Keyboard 이벤트핸들링
See more https://stackoverflow.com/a/27515738
15. Cairo
● 2D Graphics drawing 라이브러리
● GTK+의 2D Graphics 백엔드로사용
● LGPL 또는 Mozilla Public 라이선스
● 멀티 플랫폼라이브러리(Linux and Unix-like 시스템, Windows, Mac OS X)
17. GDK
● GIMP Drawing Kit의 약자
● GTK+를 특정 Windowing system에서 분리 (Platform Abstraction Layer)
● Window를 위한 Mouse, Keyboard 이벤트핸들링
● LGPL 라이선스
● 멀티 플랫폼라이브러리(Linux and Unix-like 시스템, Windows, Mac OS X)
See more https://stackoverflow.com/a/28454674
21. GTK+
● GIMP Tool Kit의 약자
● GIMP는 GNU Image Manipulation Program의 약자
● GIMP 개발에사용된GUI 라이브러리
● 1997년 Peter Mattis, Spencer Kimball, Josh MacDonald에 의해 개발
● LGPL 라이선스
● 멀티 플랫폼라이브러리(Linux and Unix-like 시스템, Windows, Mac OS X)
32. Event-Driven Programming
● 프로그램의흐름이Events에 의해 결정
● 대부분의GUI 프로그래밍은Event-driven programming
● 마우스, 키보드, Pipes, Network sockets, IPC Messages, Processes/Threads 등등
● 이벤트를받는 Main loop 존재
33. What does Main loop do?
The main event loop manages all the available sources of events for GLib and GTK+ applications. These
events can come from any number of different types of sources such as file descriptors (plain files, pipes or
sockets) and timeouts.
https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html
1. Events와 Event Handlers 등록
2. 등록된모든 Events를 관리
3. 마우스, 키보드, Pipes, Network sockets, IPC Messages, Processes/Threads 등등
34. What does Main loop do?
https://commons.wikimedia.org/wiki/File:Event_driven_programming_Simply_Explained.jpg
35. What does Main loop do?
https://www.boost.org/doc/libs/1_69_0/libs/coroutine/doc/html/coroutine/motivation.html
Main Loop
36. Signals
● GUI 프로그래밍의기반이되는 메커니즘
● 특정 액션이발생했다고알람을울리는것
● Signal이 발생하면항상 Callback 함수가실행
● 하나의Signal에 여러가지Callback 함수가연결 될 수 있음
37. Signals and Events
Events
● 프로그램외부에서발생한신호
● 예) Touch, Keyboard, Mouse
Signals
● 프로그램내부에서발생한신호
● 예) Interclass communication
https://stackoverflow.com/a/3794884
39. Gtk.Box
● 위젯(Widget)을 담을 수 있는 컨테이너중 하나
● 화면에보이지않음
● Horizontal Box (수평) / Vertical Box (수직)
● Gtk.Box.pack_start() / Gtk.Box.pack_end() 메서드를이용하여위젯 추가
● Box 안에 또 다른 Box 를 담을 수 있음
lesson2.py
40. Gtk.HeaderBar
● Gtk.Box의 Horizontal Box와 비슷
● 위젯을추가할수 있음
● Gtk.HeaderBar.pack_start() / Gtk.HeaderBar.pack_end() 메서드를이용하여위젯 추가
● Title / Subtitle 설정
● 윈도우프레임제어 기능 제공 (최소화/ 최대화/ 닫기)
● GTK+ 어플리케이션개발에서일반적으로사용하는기능
lesson3.py