Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359296
  • 博文数量: 35
  • 博客积分: 2176
  • 博客等级: 大尉
  • 技术积分: 797
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-13 14:03
文章分类

全部博文(35)

文章存档

2012年(9)

2009年(14)

2008年(12)

我的朋友

分类:

2008-06-30 14:01:07

Gtk2::GladeXML
可算是省了不少烦琐的事哦,不需要一直编写代码去完成GUI,而且真要是一个一个敲的话,没有很好的逻辑观念也白搭,Gtk2::GladeXML模块可以帮我们完成这些事,也得多亏Glade3呀,帮我们做好了大量工作。
看看最简单的是怎么完成的吧?
我们先完成hello.glade
这个用galde3去完成吧,自动会生成这个文件的。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.3 on Fri Jun 27 15:30:05 2008 -->
<glade-interface>
  <widget class="GtkWindow" id="window1">
    <property name="title" translatable="yes">hello world</property>
    <child>
      <widget class="GtkButton" id="button1">
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <property name="receives_default">True</property>
        <property name="label" translatable="yes">hello world</property>
        <property name="response_id">0</property>
      </widget>
    </child>
  </widget>
</glade-interface>

那接下来再看,我们的脚本怎么写了,刚开始的都是最简单的了

#!F:/Perl/bin/perl.exe -w


use strict;
use warnings;

# for a pure gtk+ glade project

use Gtk2 -init;
use Gtk2::GladeXML;
my $gladexml = Gtk2::GladeXML->new("D:\\work_station\\new_gtk\\hello.glade");

//这里有个问题要说明下,要用全路径,不知道是不是在windows下就是这样的,反正要是拿例子里边的来的话,是不对的,为这个我还发邮件去gtk2-perl-list。
$gladexml->signal_autoconnect_from_package('main');
my $quitbtn = $gladexml->get_widget('Quit');
$gladexml->get_widget('window1')->show();
Gtk2->main;

这就算是完成了,少了些事吧。
本来还想放个图的,好象不能放就算了,后边有新进步,再说。


有段抄来的关于,gtk2-perl实现与c方法的对比,如果以后不好找,我们也可以自己探索下嘛

Gtk2-perl 改进了一些 Gtk+ 的用法,让用户在编写 Gtk2-perl 的程序时更加方便。原来在 gtk 中的纯 c 的写法,在 Gtk2-perl 中变成了面向对象的写法,使人们更容易理解。例如:
Gtk+ 中: 	gtk_window_  		
Gtk2-perl 中:Gtk2::Window(一个库的表示)
Gtk+ 中: gtk_window_new
Gtk2-perl 中:Gtk2::Window -> new(一个函数的表示)
Gtk+ 中: gtk_window_set_default_size (GtkWindow * window, gint width, gint height)
Gtk2-perl 中:$window -> set_default_size ($width, $height); #一个函数的参数设定
Gtk+ 中: gtk_window_set_icon_list (GtkWindow * window, GList * list)
Gtk2-perl 中:$window -> set_icon_list (@icons); #设定一个函数的一组参数

原来在 Gtk+ 中函数的参数如果是一个数组,一般就需要传递这个数组的大小。在 Gtk2-perl 中就不必了。例如:
Gtk+ 中: gtk_curve_set_vector (GtkCurve *curve, int veclen, gfloat vector[]);
Gtk2-perl 中:$curve -> set_vector (@vector); #一个函数的参数设定没有了数组大小的传递

原来在 Gtk+ 中的 new 函数只是简单的建立一个新的功能,在 Gtk2-perl 中我们可以让 new 函数带多个变量,来进一步的设定这个功能。例如:
Gtk+ 中: GtkWidget* gtk_button_new_with_label (const gchar *label);
Gtk2-perl 中:$button = Gtk2::Button -> new($str); ##添加一个新按钮并设定按钮上的文字

原来在 Gtk+ 中函数返回值一般都是指针,在 Gtk2-perl 中可以返回多个变量。例如:
Gtk+ 中: gtk_window_get_size (GtkWindow *window, gint *width, gint *height);
Gtk2-perl 中:($width, $height) = $window -> get_size; #得到窗口大小返回到两个变量中


阅读(2511) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:perl 连接数据库的方法WebDB.pm

给主人留下些什么吧!~~