SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

PHPでデスクトップアプリケーションを作る

PHP-GTK2による簡易電卓アプリケーションの製作

アプリケーションの実行

このアプリケーションを実行してみましょう。コマンドプロンプトを開き、先ほどダウンロードした際にできたphp-gtk2フォルダに移動します。そして、以下のコマンドを実行して下さい

C:\php-gtk2>php.exe calc.php
実行結果
実行結果

※アプリケーションを終了したい場合、アプリケーションの【×】ボタンを押すか、コマンドライン上で[Ctr]+[C]のショートカットキーを実行して下さい。

解説

 各コンポーネントをCalcクラスの中で定義しています。

今回利用したコンポーネント
GtkEntry テキストボックス。
GtkComboBox コンボボックス。
GtkButton ボタン。
GtkTable テーブル。格子状に子コンポーネントを配置する。
GtkHBox テーブルを格納するための水平ボックス。
GtkWindow 水平ボックスを格納するウィンドウ。

 GtkEntryやGtkComboBox、GtkButtonなどの小さなコンポーネントを、GtkTableというコンテナの中に配置します。このGtkTableを生成する際、new GtkTable(1,5)と、縦の長さ1、横の長さ5のマス目を指定しています。GtkTableへのコンポーネントの配置は、次のようにattach関数を使います。

$this->tbl->attach($this->txt1,0,1,0,1);

 次にコンポーネントを配置したGtkTableオブジェクトをGtkHBoxに配置します。GtkHBoxは水平ボックスのコンポーネントです。水平ボックスへの配置には次のようにpack_start関数を使います。

$this->hbox->pack_start($this->tbl);

 さらに、このGtkHBoxボックスをadd関数でGtkWindowオブジェクトに配置します。

$this->wnd->add($this->hbox);

 GtkWindowのタイトル設定には、set_title関数を使用します。

$this->wnd->set_title("PHP計算機");

 また、[=]ボタンを押したとき計算用の関数が呼び出されるようにするには、次のようにします。

$this->calc_btn->connect_simple("clicked",array($this,"calc_handler"))

 シグナル「clicked」、つまりクリックが発生したとき「calc_handler」という関数が呼び出されるという意味です。

 calc_handler関数の中身を見てみましょう。

$num1 = doubleval($this->txt1->get_text());
$num2 = doubleval($this->txt2->get_text());

 txt1、txt2で取得した数字をdoubleval関数によって明示的に数値化し、それぞれ変数$num1$num2に代入します。

 そして、演算子のコンボボックスで選択されている演算子のインデックスをget_active関数により取得します。

$this->combo->get_active()

 今回の場合だと、インデックスが、

  • 0であれば足し算
  • 1であれば引き算
  • 2であれば掛け算
  • 3であれば割り算

 という設定にしました。

 こうしてできたCalcクラスのインスタンスを最後に生成してアプリケーションの完成です。

$calc = new Calc();

まとめ

 今回はPHP-GTK2を使ってデスクトップ上で動く電卓アプリケーションを作ってみました。PHP-GTKには今回用いたもの以外にも豊富なコンポーネントがあります。

 PHPは知っているがデスクトップアプリケーションは作ったことがない、という人もこの機会にPHP-GTK2に挑戦してみてはいかがでしょうか?

 新しい世界が広がるかもしれないですよ。

参考文献

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

tkitamura(ティーキタムラ)

Java,php,Flex,Flashなどにより、某社FXシステムから個人HPの作成まで幅広く手がけました。宜しくお願い致します。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3411 2009/02/26 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー