저자:다니엘 솔린(Daniel Solin), 전순재 역
안녕하세요! 파이썬을 사랑하는 팬 여러분! 그리고 영국 유머(British humor)를 사랑하는 팬
[1] 여러분! 오늘은 파이그놈(PyGNOME)
[2]이라고 불리는 훌륭하고 귀여운 파이썬 모듈을 살펴보겠습니다. 이 소프트웨어를 손에 쥐면 두려움에 떨며 불편한 다른 프로그래밍 언어를 사용하지 않고서도 구이(GUI)
[3] 프로그래밍이라는 거대한 세계에 다이빙해 들어갈 수 있답니다. 아시다시피 파이그놈이 제공하는 완전한 인터페이스로 우리는 그놈(GNOME)
[4] 개발/데스크 탑 환경을 다룰 수 있습니다. 이 기사에서는 그놈 데스크탑에서 필수적인 요소인 패널 애플릿에 대해 자세히 살펴 보도록 하겠습니다. 패널 애플릿은 보통 C로 개발됩니다만 이 기사에서는 파이썬으로 파이그놈을 사용하여 그놈 패널 애플릿을 개발하는 법을 배워보시죠!
그놈(GNOME)이란 무엇인가?
어떤 사람에게는 이 질문이 어렵지 않게 느껴지겠지만 막상 대답하라고 해보면 명료하게 대답할 수 있는 사람은 많지 않을 것이다. 대부분의 사람들이 그놈을 현대적인 데스크탑 환경으로 생각한다. 한편으로는 그것이 사실이기는 하지만 사실 그놈은 데스크탑 환경 그 이상이다. 또한 그놈은 구이 개발을 위한 완전한 프레임워크이기도 하다. 그놈 개발 프레임워크가 제공하는 라이브러리와 구성 요소들로 프로그래머는 표준화된 구이 애플리케이션과 유틸리티를 쉽게 구축할 수 있다. 그놈은 데스크탑 환경과 구이 개발의 표준일 뿐만 아니라 자유 소프트웨어의 거대한 집합으로서, 워드 프로세서에서부터 DC 플레이어까지 모든 것을 포함한다. 이와 같은 모든 소프트웨어 구성 요소들이 그놈 표준을 따르므로 그놈 소프트웨어들은 기본적으로 똑같아 보이고 똑같이 동작한다.
그놈 패널 애플릿이란 무엇인가?
그놈 데스크탑에는 패널이 딸려 온다. 패널은 그놈 데스크탑의 아래쪽에 보이는 긴 막대이다. 패널에서 메뉴와 퀵-런쳐(quick-launcher)
[5]에 접근할 수 있다. 이 외에도 패널에 작은 프로그램들을 저장할 수 있는데, 대개 애플릿이라고 지칭한다. 애플릿이란 프로그램 내에서 실행되도록 설계된 또 다른 프로그램이다. 이런 면에서 볼 때 애플릿은 미니-애플리케이션이라고 볼 수도 있다. 그놈 패널 애플릿은 자신이 만든 창안에서 실행되는 대신에 패널위에서 실행된다. 그렇지만 애플릿이 있는 곳의 차이를 무시한다면 패널 애플릿은 그냥 다른 프로그램과 별 차이가 없다. "실제" 그놈 프로그램에서 구현할 수 있는 모든 것은 패널 애플릿에서도 구현된다. (하지만 애플릿을 개발할 때는 훨씬 더 작은 화면 영역에서 작업을 할 것이다.)
그렇다면 왜 "실제" 그놈 애플리케이션이 아니라 애플릿 개발을 원하게 되는가? 이것은 여러분이 생성하기 원하는 프로그램의 종류에 달려 있다. 만약 스타오피스처럼 진보적인 오피스 세트를 개발하려고 하거나, 마이크로소프트 엑셀과 같은 스프레드시트를 개발하려고 한다면, 패널 애플릿은 이런 목적에는 적당하지 않다! 반면, CD 플레이어나 MP3 플레이어 개발을 원한다면, 그리고 다른 프로그램을 실행과는 관계없이 이 프로그램을 항상 제어할 수 있기를 원한다면, 그때는 아마도 패널 애플릿으로 작성해야 할 것이다. 이것이 패널 애플릿에 대한 전반적인 개념이다. 즉, 다른 창의 최대/최소화에 상관없이 어떤 프로그램에 지속적으로 접근한다는 것이 패널 애플릿의 기본적인 아이디어이다. 패널은 항상 눈에 보인다. 그러므로 애플릿도 패널위에서 항상 볼 수 있다.
[그림 1] 김프(Gimp)가 실행되고 있는 태스크바 애플릿 (최대로 보려면 클릭)
|
[그림 1]은 전형적인 그놈 패널을 보여준다. 이 패널의 요소들은 왼쪽에서 오른쪽의 순서로 그놈 메뉴, 네 개의 런쳐, 호출 애플릿, (김프가 실행되고 있는) 태스크바 애플릿, 그리고 (현재 시간 12:54 PM을 보여주고 있는) 날짜/시간 애플릿이다.
우리는 이 패널위에 상주하는 프로그램을 만들고자 한다. [그림 1]에서 호출 애플릿, 태스크바 애플릿, 그리고 날짜/시간 애플릿이 상주하는 것처럼 말이다.
파이그놈을 설치하기
그렇지만 여기서 우리는 단지 애플릿만 개발하기 원하는 것은 아니다. 더 나아가 이 애플릿을 파이썬으로 개발하기를 원하는 것이다. 따라서 파이그놈 패키지를 설치해야 한다. 파이그놈을 사용하면 파이썬을 통해 그놈 개발 라이브러리에 접근할 수 있기 때문이다. 그렇다면 파이그놈을 다운받아 시스템에 설치해보자.
파이그놈은
여기에서 구할 수 있다. 이 기사를 쓰고 있는 시점에서 최신 버전은 1.0.53이었다. 다운로드가 끝나면 그 파일이 저장된 디렉토리로 가서 다음 명령을 내려라.
tar xvfz gnome-python-1.0.53.tar.gz
이렇게 하면 파일들이 풀려서 gnome-python-1.0.53이라고 부르는 디렉토리에 위치할 것이다. 이 디렉토리로 들어가서 configure(환경설정) 스크립트를 실행하라(이 작업은 파이그놈이 시스템에 맞게 컴파일될지를 확인해 줄 것임).
./configure --prefix=/usr
이제
configure는 시스템을 조사하기 시작해 모든 것이 제자리에 있는지 확인할 것이다. 시스템에 맞추어
--prefix 옵션을 변경해주어야 한다는 것을 주의해라. 그렇지만 (레드햇 리눅스 같은) 대부분의 시스템에서 접두사는
/usr일 것이다. 만약 설정에서 에러 메시지로 종료된다면 문제의 거의 대부분은 빠진 패키지에 있다. 이와 같은 겨우 그 패키지를 설치하고 다시 시도만 하면 된다. 만약 설정에서 파이썬 헤더를 찾을 수 없다고 보고하면, 파이썬 개발 패키지를 설치만 하면 문제는 금방 해결된다.
어쨌든 설정에서 아무 에러 없이 종료되면(마지막 라인이 반드시
creating config.h이어야 함), 이제 컴파일할 준비가 다 되었다는 뜻이다. 컴파일은 단순하게
make를 다음과 같이 실행하면 된다:
make
이제 컴파일이 시작된다. 특히 램이 부족하고 느린 시스템에서 수행해야 한다면 시간이 좀 걸릴 것이다. 컴파일이 끝나면 설치가 시작될 시간이다. (이전 명령어들을 수퍼유저로 실행하지 않았다면, 수퍼유저나 루트 계정으로 변경해 다음 명령어를 작동해야 함) 아래와 같은 명령어를 사용하여 컴파일된 패키지를 설치하자.
make install
PyGNOME이
/usr/lib/python1.5/site-packages 아래에 설치되어 있을 것이다. 이제 패널 애플릿 만들기를 시작할 준비가 다 되었다!
첫 번째로 만들 파이그놈 애플릿
여기서는 아주 간단한 패널 애플릿 하나를 만들어, 여러분에게 애플릿이 만들어지는 방법부터 보여줄 것이다. 이 예제 애플릿은 프레임 속에 라벨 하나가 있는 것을 보여준다. 그렇지만 이것을 보는 정도로는 패널 애플릿을 사용하는 방법에 대한 혁신적인 아이디어를 얻을 수 없겠지만
PyGNOME의 기초는 배울 수 있을 것이다. "평범한" Gtk+ 또는 GNOME 프로그래밍의 기초만 이해해도 아무 문제없이 이 예제를 확장할 수 있을 것이다. 이제부터 예제 프로그램을 살펴보자.
[6]
1: # GNOME 애플릿 루틴을 수입하라:
2: import gnome.applet
3:
4: # Gtk+ 루틴을 수입하라:
5: import gtk
6:
7: # main() 함수:
8: def main():
9: # AppletWidget 클래스의 실체 하나를 만들어라:
10: myapplet = gnome.applet.AppletWidget("Simple Applet")
11:
12: # 애플릿 안에 보여질 라벨 하나를 만들어라:
13: label = gtk.GtkLabel("O"Reilly")
14:
15: # 틀을 만들어라:
16: frame = gtk.GtkFrame()
17:
18: # 라벨을 틀에 추가하라:
19: frame.add(label)
20:
21: # 라벨을 보여주어라:
22: label.show()
23:
24: # 틀을 보여주어라:
25: frame.show()
26:
27: # 틀을 에플릿에 추가하라:
28: myapplet.add(frame)
29:
30: # 에플릿을 위한 툴팁 텍스트를 설정하라:
31: myapplet.set_tooltip("This is a very simple panel applet.")
32:
33: # 애플릿을 보여주어라:
34: myapplet.show()
35:
36: # Gtk 주-회돌이 안으로 들어가라:
37: gtk.mainloop()
38:
39: # 다음은 익히 본 파이썬 코드이다, 그래서 쉽게 이해할 것이다:
40: if __name__ == "__main__": main()
여러분이 구이 프로그래밍을 사용해 본적이 있다면 목록에 있는 주석만으로도 충분히 이해할 수 있을 것이다. 어쨌든 간에 모든 것을 확실히 하기위해 예제를 자세히 살펴보자.
먼저, 2번 줄과 5번 줄에서 그놈 애플릿과 Gtk+ 루틴을 불러와야 한다. 이렇게 하여야만 사용하고자 하는 GNOME과 Gtk+ 루틴에 접근할 수 있다. 모든 그놈 패널 애플릿의 핵심은 AppletWidget 객체이다. AppletWidget 클래스에 속한 객체는 전체적으로 패널 애플릿을 대표한다. 우리가 만든 프로그램을 평범한 "윈도우-프로그램"이 아닌 패널 애플릿으로 만드는 것이 다름아닌 바로 이 객체이다. 이 예제에서 AppletWidget 실체는 10번 줄에서 만들어지고
myapplet이라고 부른다. 또한 AppletWidget 생성자에게 인수 하나를 건네주는 것에 주목해라. 그 인수는 애플릿 이름을 나타내는 문자열이다. 13번 줄에서 GtkLabel 실체인
(label)이 생성되면 텍스트 "O"Reilly"를 삽입한다. 16번 줄에서 GtkFrame 객체인
(frame)가 생성된다. 19번 줄에서 라벨을 프레임에 삽입하면 텍스트 주위를 산뜻하게 감싼 프레임을 얻을 수 있다(농담 아님!!). 22번 줄과 25번 줄에서 호출하면 라벨과 프레임이 화면에 나타난다. 28번 줄은 그 프레임을 AppletWidget 객체의 자손으로 만든다.
label은
frame의 자손이 되기 때문에
label은 자동적으로
myapplet의 자손이 될 것이다.
31번 줄에서, 소위 "툴팁(tooltip)"이라 불리는 것을 애플릿에 설정할 것이다. 툴팁(tooltip)이란 마우스 포인터를 애플릿 위에 잠시 놓아두면 나타나는 텍스트이다. 툴팁은 (이 예제에서와 같이) 보통 해당 프로그램에 대한 짧은 설명이다. 34번 줄에서, 애플릿을 보이게 만든후 37번 줄에서, Gtk+ 메인 루프로 들어간다, 이 루프는 사용자간의 모든 상호작용을 처리할 것이다.
타이핑하는 수고를 덜고 싶다면
여기에서 예제를 다운받을 수 있다. 그리고 다운받은 예제는 안전한 장소에 확실하게 저장해 두어라.
예제 애플릿 테스트하기
[그림 2] 그놈 패널 위에서 실행되고 있는 간단한 애플릿 (최대로 보려면 클릭)
|
우리가 새로 만든, 믿을 수 없을 정도로 진보적이고 복잡한 애플릿을 테스트 해볼 시간이다. 테스트 시작은 다른 파이썬 프로그램에서 하는 것처럼 그대로 하면 된다.
python lst1.py
모든 것이 제 자리에 있다면, 애플릿은 이제 시작되어서 패널 위로 보일 것이다. 물론 이것이 작동하려면 그놈 패널이 실행되어야 한다. [그림 2]에서 우리가 만든 간단한 애플릿이 그놈 패널 위에서 실행되고 있는 것을 볼 수 있다.
[그림 3] 표준 애플릿-메뉴 (최대로 보려면 클릭)
|
우리가 만든 애플릿은 프레임에 둘러싸인 "O"Reilly" 라벨이며, 태스크바 애플릿과 날짜/시간 애플릿 사이에 있다. 이 애플릿은 아무런 기능과 특징을 가지고 있지는 않다고 하더라도 어쨌든 우리가 처음으로 만든 애플릿이다! 모든 애플릿에는 표준 애플릿-메뉴가 있다. 이것을 보고 싶다면 애플릿 아무곳에서나 오른쪽 마우스 버튼을 클릭해라. 이제 메뉴가 튀어 나오면 그 애플릿을 제거하거나 이동시킬 수 있으며 다른 애플릿을 그 패널에 추가할 수도 있다. 이 메뉴는 [그림 3]에서도 볼 수 있다.
툴팁을 나오게 하려면 마우스 포인터를 애플릿 위에 잠시 놓아보라. [그림 4]에서 보는 것과 같이 툴팁이 나타날 것이다.
이상이다, 여러분이 처음으로 만든 파이그놈 애플릿을 축하한다!
요약
이 기사에서 여러분은 파이그놈 모듈과 파이썬으로 그놈 패널 애플릿을 개발하는데 필요한 기초를 배웠다. 비록 여기서는 대단히 방대한 주제의 표면만을 건드렸을 뿐이지만, 이제 여러분은 그놈 패널 애플릿이 무엇인지, 그리고 언제/왜 그것들이 유용한지에 대한 기본적인 이해는 마쳤으리라고 본다.
[그림 4] 툴팁 메뉴 (최대로 보려면 클릭)
|
애플릿을 개발할 때는, "실제" 그놈 프로그램으로 구현할 수 있는 모든 것들을 애플릿으로도 구현할 수 있다는 사실을 반드시 기억해야 한다. 모든 GNOME/Gtk+ 위젯이나 특징들이 애플릿에서도 사용된다. 훌륭한 패널 애플릿은 애플릿 자체가 해낼 수 있는 것보다 더 거대한 프로그램이 할 수 있는 모든 것을 할 수 있다는 점을 명심해라. 게다가 언제나 접근할 수 있다는 장점까지도 있다. 크기가 문제라고 생각하십니까? 그렇다면 이제 좀 진지해집시다!
다니엘 솔린(Daniel Solin)은 프리랜서 작가이자 구이 프로그램을 전문으로 하는 리눅스 상담가이다. 그의 첫 작품은 2000년 3월에 출간된 『SAMS Teach Yourself Qt Programming in 24 hours』라는 책이다.
[1] BBC 방송에서 방영하는 코메디(Monty Python"s Flying Circus)를 좋아하는 팬, 파이썬의 창시자 귀도 반 로섬이 열렬한 팬으로 파이썬이라는 이름도 여기에서 유래한다.
[2] PyGNOME : GNOME 환경을 다룰 수 있게 해주는 파이썬 인터페이스 모듈.
[3] GUI(Graphical User Interface) : 그래픽 사용자 인터페이스
[4] GNOME (GNU Network Object Model Environment) : GNU 네트워크 객체 모델 환경
[5] quick-launcher : 빠른 실행기(간편 실행기, 신속 발사대)
[6] 주석은 반드시 영어로 달것, 주석의 스타일은 설명이 아니라 명령으로 할 것 (파이썬 스타일 가이드), 한글을 출력하려면 기본코드전환(default encoding)을 utf-8로 설정하는 것이 편리하다.