Recent Posts
Recent Comments
Link
11-29 16:02
동글동글 라이프
Chapter 4. Getting Started 본문
단순한 프로그램을 실행해보도록 하자.
이 프로그램은 종료버튼을 제외하고 아무런 기능이 없는 200 x 200 픽셀의 윈도우창 하나를 만든다.
use Gtk2;
Gtk2->init;
$window = Gtk2::Window->new('toplevel');
$window->show;
Gtk2->main;
0; |
위의 프로그램을 실행할 수 있을 것이다.
모든 프로그램은 당연하게 GTK2 모듈을 사용한다.
Gtk2->init
모든 GTK 어플리케이션을 부른 뒤 init 메서드를 호출 할 것이다.
이 설정은 기본적인 비주얼과 색상등을 우리에게 제공한다.
이 메서드는 라이브러리를 사용하기 위해 기본적인 핸들을 초기화를 해주며
커맨드라인에서 응용프로그램으로 넘어가는 인자값을 찾아 체크해준다. -> 이 말이 무슨말인지 모르겠음
- --gtk-module
- --g-fatal-warnings
- --gtk-debug
- --gtk-no-debug
- --gdk-debug
- --gdk-no-debug
- --display
- --sync
- --name
- --class
이 매개변수 리스트들은 어플리케이션에 문법적으로 맞지않고 무시되어 제거된다.
그래서 init 메소드는 Gtk2모듈을 로드할 때 무조건적으로 이와 같이 'init' 를 인자값으로 넣어 사용한다.
Gtk2 '-init';
다음 두줄은 윈도우를 만들고 보여주는 코드이다.
$window = Gtk2::Window->new('toplevel');
$window->show;
toplevel 우리가 원하는 윈도우를 꾸미거나 배치를 관리해주는 특정한 매개변수 이다.
0 x 0 사이즈의 윈도우를 만들어 주고
윈도우 사이즈를 200 X 200의 으로 세팅해주며 이것을 마음대로 조작할 수 있다.
우리는 위젯속성을 정하고 그것을 표기 할 줄 알아야 Gtk 를 사용 할 수 있다.
마지막 라인은 Gtk 메인 프로세스에 루프를 돌려주는 코드이다.
Gtk2->main;
메인은 GTK 어프리케이션을 모두 불러낸다.
그리고 컨트롤이 이 포인트에 도달하면 GTK는 x 이벤트(아무 버튼 또는 키 등)를 기다린다.
or gile IO notifications to occur. In our simple example, however, events are
ignored.
지금부터 간단한 버튼이 있는 프로그램을 만들어보자. 고전적인 Hello world 를 출력하고 있다..
use Glib qw/TRUE FALSE/;
use Gtk2 '-init';
sub hello
{
my ($widget, $window) = @_;
print "Hello, World\n";
$window->destroy;
}
sub delete_event
{
print "delete event occurred\n";
return TRUE;
}
$window = Gtk2::Window->new('toplevel');
$window->signal_connect(delete_event => \&delete_event);
$window->signal_connect(destroy => sub { Gtk2->main_quit; });
$window->set_border_width(10);
$button = Gtk2::Button->new("Hello World");
$button->signal_connect(clicked => \&hello, $window);
$window->add($button);
$button->show;
$window->show;
Gtk2->main;
0; |
이 코드 번역은 다음 시간에...
'개발자 이야기 > Perl' 카테고리의 다른 글
음악을 들어보자! #2 (2) | 2008.10.09 |
---|---|
음악을 들어보자! (1) | 2008.10.08 |
Tutorial Availability & Introduction (0) | 2008.10.07 |
프로야구 순위 출력 (2) | 2008.10.07 |
N번째로 발생하는 매치 찾기. (1) | 2008.10.07 |
Comments