学习php-gtk2之hello glade
上次我们用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>
上面定义了一个主窗体,里面自由一个叫btnClose的button。我们把上面的xml保存为helloglade.glade,下面我们看看php-gtk2是如何使用这份xml的描述:
CODE:
-
<?php
-
// 建立一个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的情况下,就填充了整个窗体,再也放不下别的内容,真是恼人哪。期待有大侠指点
作者: Volcano 发表于August 2, 2006 at 8:23 am
Dubuntu 于 2006-09-15 @ 00:53:35 留言 :
先在窗口中放置”vbox”或”hbox”或”table”就可以了.
volcano 于 2006-09-15 @ 07:36:46 留言 :
这样布局的确方便多了,见http://www.ooso.net/index.php/archives/213
不过我觉得用table来布局比较整齐
anton 于 2006-10-11 @ 13:47:38 留言 :
應該可以用 “layout” 來任意擺放 widget 的位置吧~
volcano 于 2006-10-11 @ 22:13:52 留言 :
对,layout也可以,现在改用ppform,暂时不玩php-gtk
iamqk 于 2006-10-23 @ 16:59:26 留言 :
先看gtk2的文档,在用glade,glade只是工具而已,特性都是gtk2定义的
volcano 于 2006-10-23 @ 17:30:20 留言 :
楼上说的是,之前很留意这些周边工具,主要是为了开发的顺畅
phpknows 于 2008-01-09 @ 18:30:01 留言 :
我可能是没有配置好,运行时出错:
Fatal error: Class ‘GladeXML’ not found in D:\htdocs\php-gtk\test.phpw on line 4