GTK + PHPアプリケーション

画像
多くの人は信じがたいと思っていますが、PHPではたわごとやスクリプトだけでなく、小さなGUIアプリケーションも作成できます。 小さい。トピックはあまり人気がなく、それぞれ開発のためのより便利で強力なツールがあるという事実のためにあまりカバーされていないため、ツールは非常に粗雑です。 アプリケーションの作成には「自分用」またはコース/卒業証書が適していますが。
この記事では、PHPで単純なGTK +アプリケーションを作成する例を示します。

GTK +はインターフェイス要素のクロスプラットフォームライブラリであり、Linuxシステムで人気があり、最近ではWindowsでも頻繁に使用されています。

事前に質問に答えてみます。「なぜこれが必要なのですか、Pythonで書くことができますか?」 もちろんできますが、:
1.信じがたいですが、PHPをよく知っていてPythonを学ぶ時間がない人もいますが、GUIアプリを書く必要があります。
2. PHPで書かれた機能は、必要なライブラリ(Windows、Linux、MaxOS)を備えたPHPがあればどこでも機能します。

始めましょう


通常、HelloWorld!は言語やライブラリの魅力を示すために書かれていますが、もう少し進んで計算機を作成します。

プロセス全体は非常に単純で、2つのステップで構成されています。
1. Glade Interface Editorでのインターフェースの開発
2.前の手順で作成したインターフェイスを使用したアプリケーション開発。

設置


もちろん、Interface Builderを使用してインターフェイスを作成する必要はありません。 空き地ファイルは、自分で作成したり、PHPスクリプトで直接インターフェイスを作成したりできるXMLです。 ただし、この記事の目的はアプリケーションの作成の単純さを示すことなので、簡単な方法でDrag'n'Dropインターフェイスエディターを使用します。

ここからダウンロードできます: http : //glade.gnome.org/sources.html
またはそれ以外:
[aptitude|yum] install glade 

使用するPHPライブラリは、PHP 5.1以降でのみ動作するため、 http//php.net/downloads.phpを取得します。

デフォルトでは、PHPにはGTKライブラリがないため、インストールする必要があります。
ダウンロード: http : //gtk.php.net/download.php
インストール: http : //gtk.php.net/manual/en/tutorials.installation.php
Linuxにインストールする場合は、SVNからソースを取得することをお勧めします。 設定の前に、cairo-phpをインストールする必要があります。
 pecl install cairo-beta 

構成がエラーでクラッシュした場合:「 `lt_if_append_uniq(lt_decl_varnames、...」はphp-gtkフォルダーで行われます:
 cat /usr/share/aclocal/ltoptions.m4 /usr/share/aclocal/ltversion.m4 /usr/share/aclocal/ltsugar.m4 /usr/share/aclocal/lt~obsolete.m4 >> aclocal.m4 

次に、。/ buildconfと./configureを再起動します

インターフェース


複雑な機能は考えず、シンプルなインターフェイスを作成します。

最初に、[共通]タブからウィンドウを作成し、Visible = trueに設定します。 垂直ボックスをウィンドウにドラッグし、3つの領域に分割します。 上の領域では、メニューバー、中央のテキストエントリ、および上の図のようにボタンを作成する下のテーブル(4x4)に配置します。
次に、インターフェイス要素のイベントハンドラを作成します。
各ボタンについて:
  1. ボタンをクリックしてください
  2. タブ信号に移動
  3. 「Clicked」フィールドに、ボタン0〜9のenterValue、操作用のボタンのperformAction、「C」のclearCalcを記述します。
  4. PHPがどのボタンが押されているかを理解するために、たとえば次のように各ボタンの名前を記述します。
    「0」:「input0」
    ...
    「9」:「input9」
    「*」:「Action_mul」
    「/」:「Action_div」
    「+」:「Action_add」
    「-」:「action_min」
    "=": "Action_calc"
    「C」:「action_clear」

最後の仕上げは、[ファイル]-> [終了]をクリックしたときにアプリケーションを終了することです。このため、このメニュー項目のアクティベート信号の終了ハンドラーを設定します。

その後、作成したフォームをCalc.gladeファイルにLibGlade形式で保存し、将来のアプリケーションとともにフォルダーに配置します。

プログラミング

PHPファイル「calc.php」を作成します。このファイルには次のように記述します。
 <?php $glade = new GladeXML('calc.glade'); Gtk::main(); 

最初の行はファイルをインターフェイスでロードし、2行目はすべての要素を作成します。

フォームを起動してお楽しみください:
 php calc.php 

次に、イベントハンドラの実装と電卓自体を記述する必要があります。

Glade Interface Editorで説明したイベントハンドラーは、通常のPHPクラス関数またはメソッドです。 1つのハンドラーを呼び出すと、1つの引数(ハンドラーが呼び出されるオブジェクト)が渡されます。 単純化するために、このオブジェクトの名前を操作の識別子または入力する値として使用します。
計算に必要なイベントハンドラとメソッドを含むクラス「Calc」を作成しましょう。
 <?php class Calc { protected $glade; protected $firstParam = null; protected $operation = null; function __construct($glade) { $this->glade = $glade; } /*    */ protected function calculate($operation) { $secondParam = (float) $this->glade->get_widget('entry1')->get_text(); $firstParam = (float) $this->firstParam; $result = 0; switch($this->operation) { case '*': $result = $firstParam * $secondParam; break; case '/': $result = ($secondParam > 0 ? $firstParam / $secondParam : 0); break; case '+': $result = $firstParam + $secondParam; break; case '-': $result = $firstParam - $secondParam; break; } $this->glade->get_widget('entry1')->set_text($result); $this->firstParam = $result; $this->operation = null; } /*   */ public function performAction($obj) { if ($this->firstParam == null) { $this->firstParam = $this->glade->get_widget('entry1')->get_text(); $this->glade->get_widget('entry1')->set_text(''); } if ($this->operation == null) { $this->operation = str_replace( array('action_mul', 'action_add', 'action_min', 'action_div'), array('*', '+', '-', '/'), $obj->name ); $this->glade->get_widget('entry1')->set_text(''); } else { $this->calculate($obj->name); } } /*        */ public function enterValue($obj) { /*       input0..input1,   "input"    */ $this->glade->get_widget('entry1')->set_text( $this->glade->get_widget('entry1')->get_text(). str_replace('input', '', $obj->name) ); } /*   ,        */ public function clearCalc($obj) { $this->firstParam = null; $this->operation = null; $this->glade->get_widget('entry1')->set_text(''); } /*  */ public function quit() { exit; } } 

最後に、すべてのイベントハンドラーがCalcクラスに格納されていることを指摘します。
 $glade->signal_autoconnect_instance(new Calc($glade)); 

まあ、それだけです。
 php calc.php 

githubのすべてのサンプルコード: https : //github.com/kooler/php-glade-example

Source: https://habr.com/ru/post/J130496/


All Articles