## page was renamed from zhArticleTemplate ##language:zh #pragma section-numbers on ''' 含有章节索引的中文 文章模板 ''' ::-- ehu4ever [<>] <> = Getting Started = 我们用一段最最esay的代码来开始我们的PyGTK之旅,这个小程序会构造一个200x200 pixel的窗口,它只能用shell才能关掉。 {{{#!python #!/usr/bin/env python # example base.py import pygtk pygtk.require('2.0') import gtk class Base: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.show() def main(self): gtk.main() print __name__ if __name__ == "__main__": base = Base() base.main() }}} 将上面这段代码保存之后,就可以运行了: {{{ python base.py }}} 如果basy.py被你弄成了被执行文件,而且它的存放路径在PATH环境变量中 ,那么它也可以用下面这个命令运行: {{{ base.py }}} 下面是对于整段代码的解释: 第一行是调用python来执行base.py。第五到七行是用来区别装在你pc上的不同版本的PyGTK。这几行代码表明,本程序使用的是PyGTK的2.0版本,它包含了所有主版本号是2的PyGTK。这样这个程序就不会使用你pc上的PyGTK的早期版本(如果有的话)。 18到20行代码是用来检查{{{__name__}}}的值是不是{{{__main__}}},这样就把程序限定在只有从python直接启动的情况下才会运行,而不是import到了一个正在运行的python解释器。在这种情况下,这上程序就会建造一个新的Base类,而且在 variable base中保存了一个指向它的reference('''''注意:其实这句话我也不是很懂!!!''''')。 程序的最后是调用main()启动GTK+的事件处理循环。 程序运用后,就会出现如下图的一个window: ||'''Figure 2.1. Simple PyGTK Window'''|| ||{{attachment:base.png}}|| 这个程序的第一行是用来可以让这个程序从*UNIX的shell程序中调用,当然'''python'''要在你的PATH中。在所有的程序中,如果有这么一行的话,它一定是'''line 1'''。 程序的5到7行import了PyGTK 2的模块,并且初始化了GTK+的环境。这几个PyGTK的模块定义了用来操作GTK+的程序接口,这个程序中要用到。 对于熟悉GTK+的人来说,GTK+的初始化工作包括了调用gtk_init(),这个函数为我们事先搞定了一些事,比如默认的窗口视觉样式和颜色,默认的事件处理方式,它还检查了在命令行中传入我们程序的参数,查找一个或多个以下的东东: * --gtk-module * --g-fatal-warnings * --gtk-debug * --gtk-no-debug * --gdk-debug * --gdk-no-debug * --display * --sync * --name * --class 它把它们从命令行中删除了(如果有的话),然后把余下的东西留给了我们的程序去对付。上面的那堆东西都是可以被GTK+程序处理的标准参数。 9到15行定义了一个python的类,它的名字叫作Base。在这个类中有实例初始化函数{{{__init__()}}}。这个{{{__init__()}}}定义了一个top-level的窗口(line 11),然后让GTK+显示它(line 12)。在11行中带有参数gtk.WINDOW_TOPLEVEL的函数gtk.Window()告诉窗口管理器:我们要这个窗口想要得到装修(使用一些窗口管理器的主题theme)和安置(放在显示平面的某一个位置)。这个窗口没有子窗口,它的默认大小是200x200,当然,我们可以在之后操作它。 14、15行定义main(),它调用了PyGTK的main()。而这个PyGTK的main()又去调用了GTK+的事件处理循环,来处理鼠标、键盘、和窗口事件。 18到20行让程序在被直接启动或是在被当作参数传入python解释器的情况下自动运行。在这些情况下,包含在python的变量{{{__name__}}}中的程序名称是{{{__main__}}},这样18到20行程序就会被执行。 19行创建了一个Base类的实例,叫做base。一个gtk.Window被创建并且显示。 20行调用Base类的main()函数,启动GTK+的事件处理循环。当程序执行到这一步,GTK+会在sleep中等待X事件(比如键盘或鼠标上的键被按下),超时,或是文件的IO操作开始了。但是,在我们的这个最最easy的程序中,这些麻烦事都不去管了。