perlでGUI

| 0 Comments | 0 TrackBacks | このエントリーをはてなブックマークに追加 このエントリーのはてなブックマーク件数

一般的にperlはCGI、テキスト処理、スクレイピング等に利用されると思われがちですが、GUIだって書けるんです。

GUIを扱えるモジュールも数あるのですが、今日はGTK(GTK2)を使うサンプルをご紹介したいと思います。

GTK2-Perl - GNOME Live!
gtk2-perl Home

にドキュメントやチュートリアルがあります。cpanからは"Gtk2"をインストールします。

GUIの作り方も他の言語と変りません。以下簡単な例

use strict;
use Gtk2 qw/-init/;

my $window = Gtk2::Window->new('toplevel');
$window->signal_connect('destroy' => *Gtk2::main_quit);

my $vbox = Gtk2::VBox->new(0, 10);
$window->add($vbox);

my $label = Gtk2::Label->new('Hello, Perl!');
$vbox->add($label);

my $button = Gtk2::Button->new('close');
$button->signal_connect('clicked' => *Gtk2::main_quit);

$vbox->add($button);
$window->set_border_width(5);
$window->show_all();

Gtk2->main();

実行すると以下の様な画面が現れます。


http://perl-mongers.org/2008/06/03/perl-and-gtk/perl-gtk.png


手続きとしてはC言語やpython(PyGTK)と大して変りませんね。単順にウィンドウ作ってコンテナ作ってラベルとボタンを貼り付けているだけです。まぁOOぽく書くなら"->new"よりも"new Gtk::Window()"なんでしょうね。

use strict;
use Gtk2 qw/-init/;

my $window = new Gtk2::Window('toplevel');
$window->signal_connect('destroy' => *Gtk2::main_quit);

... snip ...

またGUIビルダであるgladeを使った場合でも簡単。"Gtk2::GladeXML"をインストールし


http://perl-mongers.org/2008/06/03/perl-and-gtk/perl-glade-thumb-400x307.png


この様な画面をgladeで作成、"project1.glade"というファイル名で保存し、以下の様な少量のコードでGUIが作成出来ます。

use strict;
use Gtk2 qw/-init/;
use Gtk2::GladeXML;

my $gladexml = Gtk2::GladeXML->new('project1.glade');
$gladexml->get_widget('button1')->signal_connect('clicked' => *Gtk2::main_quit);

Gtk2->main;

楽ちんですね。

通常、イベントハンドラはsignal_connectで行い、キーボードイベントやタイマも扱えます。シグナル名称は上記サイトからリファレンスやチュートリアルで参照して下さい。


LWPやWWW::Mechanize等といったネットワークを扱えるモジュールと組み合わせれば色んなツールも簡単に出来上がります。(手前味噌ですが「Web::ScraperなんかでXPathやCSSセレクタを決める時に便利かもしれないツール」なんてのも簡単に作れますよ)


ちなみにXMPPを使ったTwitterクライアント、TwitimもGtk2-perlを使っている様ですね。

動きのあるプログラムも楽しいですよね。


皆さんもperlでGUI、作ってみられてはどうでしょうか。

No TrackBacks

TrackBack URL: http://perl-mongers.org/MT/mt-tb.cgi/46

Leave a comment

About this Entry

This page contains a single entry by mattn published on June 3, 2008 6:19 PM.

Hashを使ってユニークにしよう! was the previous entry in this blog.

AV女優ブログ検索サービスのソースを公開します。 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

Creative Commons License
This blog is licensed under a Creative Commons License.
Powered by Movable Type 4.21-en