php-gtk2學習之hello glade
原文地址:http://bbs.phpres.com/viewthread.php?tid=1799
上 次我們用php-gtk2寫了第一個hello world的windows gui程序,不是太難,也不算太容易。因爲界面上畢竟不像開發web程序那樣,有dreamweaver之類的工具輔助設計,也不像delphi之類的 IDE,要做個像樣的玩具肯定是有些難度的。下面我們看看進階的用法,使用Glade來輔助界面設計
Hello glade在linux下做過gui的對glade應該不會陌生,用glade畫好程序界面之後,可以輸出一個xml格式的描述,象下面這樣:
CODE:
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkWindow" id="wndClose">
<property name="visible">True</property>
<property name="title" translatable="yes">Close me</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="destroy" handler="gtk::main_quit"/>
<child>
<widget class="GtkButton" id="btnClose">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="onClickButton"/>
</widget>
</child>
</widget>
</glade-interface>
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkWindow" id="wndClose">
<property name="visible">True</property>
<property name="title" translatable="yes">Close me</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="destroy" handler="gtk::main_quit"/>
<child>
<widget class="GtkButton" id="btnClose">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="onClickButton"/>
</widget>
</child>
</widget>
</glade-interface>
上面定義了一個主窗體,裏面自由一個叫btnClose的button。我們把上面的xml保存爲helloglade.glade,下面我們看看php-gtk2 是如何使用這份xml的描述:
CODE:
<?php
// 建立一個glade實例,從xml文件裏讀取參數和元素
$glade = new GladeXML('helloglade.glade');
//Start the main loop
Gtk::main();
?>
// 建立一個glade實例,從xml文件裏讀取參數和元素
$glade = new GladeXML('helloglade.glade');
//Start the main loop
Gtk::main();
?>
上面的程序僅僅只有兩行,就已經完成了整個界面的描繪,是不是很簡單?
怎麼用Glade坦白的說,Glade還不是相當易用。下面是Glade for win的下載地址:
http://gladewin32.sourceforge.net/modules/news/
我還在摸索如何把這東東用好,因爲我總是在畫了一個button的情況下,就填充了整個窗體,再也放不下別的內容,真是惱人哪。期待有大俠指點