Linux中国论坛's Archiver

lydr 发表于 2006-12-15 15:12

在windows下面使用pygtk

这个似乎不应该发到一个linux社区,不过我相信有一些朋友在学习python图形界面的时候还是希望能够在windows下面先试一下,所以我一时兴起写了这个帖子。

做一点基础准备:pygtk是python的一个GUI,比内置的Tkinter性能和功能都要好一些,可以写出标准的GTK程序。我后面的都是以python 2.4为基础

1,安装gtk+ runtime for win32
最新版本是 2.6.4-rc2
[url=http://gladewin32.sourceforge.net/]http://gladewin32.sourceforge.net[/url]
安装之后,记得把安装目录(默认是 c:\GTK)面的bin目录里所有的dll文件拷贝到windows system32 目录,否则 pygtk 程序找不到相关的 dll 文件
然后修改 c:\GTK\etc\pango\pango.modules 文件,把所有的模块路径修改为真实路径。本例中是C:\GTK\lib\pango\1.4.0\modules。把 pango.modules 文件拷贝到 c:\windows\system32\etc\pango\ 目录下

注意,我这里是很偷懒的作法,为了以后重新安装 gtk+ runtime 到别的目录也不需要修改其他东西。你们也可以通过修改配置文件来达到同样的目的。


2,安装python for win32
这个不需要多说,去
[url=http://www.python.org/]http://www.python.org[/url] 下一个好了
然后把python的安装目录设置到path环境变量中

3,安装pygtk for win32
最新版本的是2.6.1
[url=http://www.pcpm.ucl.ac.be/~gustin/win32_ports/binaries/pygtk-2.6.1-1.win32-py2.4.exe]http://www.pcpm.ucl.ac.be/~gustin/wi...in32-py2.4.exe[/url]


4,编写一个hello world
随便拿起个编辑器开写(我用notepad),假设文件的名字是 test.py

[align=left][code]
import pygtk
import gtk

class HelloWorld:
        def hello(self,widget,data=None):
                print "Hello World!"
               
        def delete_event(self,widget,data=None):
                print "delete_event"
                return gtk.FALSE
       
        def destroy(self,widget,data=None):
                gtk.main_quit()
       
        def __init__(self):
                self.window=gtk.Window(gtk.WINDOW_TOPLEVEL)
                self.window.connect("delete_event",self.delete_event)
                self.window.connect("destroy",self.destroy)
                self.window.set_border_width(10)
               
                self.button=gtk.Button("Hello World!")
                self.button.connect("clicked",self.hello,None)
                self.button.connect_object("clicked",gtk.Widget.destroy,self.window)
                self.window.add(self.button)
               
                self.button.show()
                self.window.show()
       
        def main(self):
                gtk.main()
               
if __ name__=="__main__":
        hello=HelloWorld()
        hello.main()
[/code][/align]


保存之后在保存的目录打开命令行,运行 python test.py,应该可以看到一个小窗口了。
如果出现错误,把倒数第三行注释掉,倒数第二、第一行取消缩进。

最后恭喜一下自己,大功告成。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.