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; #得到窗口大小返回到两个变量中
阅读(2572) | 评论(0) | 转发(0) |