学习php-gtk2之hello glade

上次我们用php-gtk2写了第一个hello world的windows gui程序,不是太难,也不算太容易。因为界面上毕竟不像开发web程序那样,有dreamweaver之类的工具辅助设计,也不像delphi之类的IDE,要做个像样的玩具肯定是有些难度的。下面我们看看进阶的用法,使用Glade来辅助界面设计

Hello glade

在linux下做过gui的对glade应该不会陌生,用glade画好程序界面之后,可以输出一个xml格式的描述,象下面这样:

CODE:
  1. <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
  2. <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
  3.  
  4. <glade-interface>
  5.  
  6. <widget class="GtkWindow" id="wndClose">
  7.   <property name="visible">True</property>
  8.   <property name="title" translatable="yes">Close me</property>
  9.   <property name="type">GTK_WINDOW_TOPLEVEL</property>
  10.   <property name="window_position">GTK_WIN_POS_NONE</property>
  11.   <property name="modal">False</property>
  12.   <property name="resizable">True</property>
  13.   <property name="destroy_with_parent">False</property>
  14.   <property name="decorated">True</property>
  15.   <property name="skip_taskbar_hint">False</property>
  16.   <property name="skip_pager_hint">False</property>
  17.   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  18.   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  19.   <signal name="destroy" handler="gtk::main_quit"/>
  20.  
  21.   <child>
  22.     <widget class="GtkButton" id="btnClose">
  23.       <property name="visible">True</property>
  24.       <property name="can_focus">True</property>
  25.       <property name="label">gtk-close</property>
  26.       <property name="use_stock">True</property>
  27.       <property name="relief">GTK_RELIEF_NORMAL</property>
  28.       <property name="focus_on_click">True</property>
  29.       <signal name="clicked" handler="onClickButton"/>
  30.     </widget>
  31.   </child>
  32. </widget>
  33.  
  34. </glade-interface>

上面定义了一个主窗体,里面自由一个叫btnClose的button。我们把上面的xml保存为helloglade.glade,下面我们看看php-gtk2是如何使用这份xml的描述:

CODE:
  1. <?php
  2. // 建立一个glade实例,从xml文件里读取参数和元素
  3. $glade = new GladeXML('helloglade.glade');
  4.  
  5. //Start the main loop
  6. Gtk::main();
  7. ?>

上面的程序仅仅只有两行,就已经完成了整个界面的描绘,是不是很简单?

怎么用Glade

坦白的说,Glade还不是相当易用。下面是Glade for win的下载地址:
http://gladewin32.sourceforge.net/modules/news/

我还在摸索如何把这东东用好,因为我总是在画了一个button的情况下,就填充了整个窗体,再也放不下别的内容,真是恼人哪。期待有大侠指点

作者: Volcano 发表于August 2, 2006 at 8:23 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,

7 条评论 »

  1. Dubuntu 于 2006-09-15 @ 00:53:35 留言

    先在窗口中放置”vbox”或”hbox”或”table”就可以了.

  2. volcano 于 2006-09-15 @ 07:36:46 留言

    这样布局的确方便多了,见http://www.ooso.net/index.php/archives/213
    不过我觉得用table来布局比较整齐

  3. anton 于 2006-10-11 @ 13:47:38 留言

    應該可以用 “layout” 來任意擺放 widget 的位置吧~

  4. volcano 于 2006-10-11 @ 22:13:52 留言

    对,layout也可以,现在改用ppform,暂时不玩php-gtk

  5. iamqk 于 2006-10-23 @ 16:59:26 留言

    先看gtk2的文档,在用glade,glade只是工具而已,特性都是gtk2定义的

  6. volcano 于 2006-10-23 @ 17:30:20 留言

    楼上说的是,之前很留意这些周边工具,主要是为了开发的顺畅

  7. phpknows 于 2008-01-09 @ 18:30:01 留言

    我可能是没有配置好,运行时出错:

    Fatal error: Class ‘GladeXML’ not found in D:\htdocs\php-gtk\test.phpw on line 4

RSS 为此帖反馈评论 · 反向跟踪 网站

留条评论