学习php-gtk2之hello glade

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

Hello glade

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

<?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的描述:

<?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的情况下,就填充了整个窗体,再也放不下别的内容,真是恼人哪。期待有大侠指点

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

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

Tags: ,

9 条评论 »

  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

  8. 无奈 于 2010-01-04 @ 14:05:39 留言

    Fatal error: Class ‘GladeXML’ not found 也是这个错误。。。。不知道哪里出问题了

  9. sniper 于 2010-04-08 @ 15:06:57 留言

    如果找不到gladeXML类,请看一下PHP的配置文件里“php-gtk.extensions = php_gtk_libglade2.dll,php_gtk_sourceview2.dll”这部分,同时请注意实际调用的配置文件是哪个,可以先在命令行使用php -i 看看PHP调用的是哪个文件,因为php-gtk有可能调用的是php-cli.ini这个配置文件,而不是php.ini

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

留条评论