LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2588|回复: 12

[原创]在windows下面使用pygtk

[复制链接]
发表于 2005-3-28 14:56:38 | 显示全部楼层 |阅读模式
这个似乎不应该发到一个linux社区,不过我相信有一些朋友在学习python图形界面的时候还是希望能够在windows下面先试一下,所以我一时兴起写了这个帖子。

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

1,安装gtk+ runtime for win32
最新版本是 2.6.4-rc2
http://gladewin32.sourceforge.net
安装之后,记得把安装目录(默认是 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
这个不需要多说,去
http://www.python.org 下一个好了
然后把python的安装目录设置到path环境变量中

3,安装pygtk for win32
最新版本的是2.6.1
http://www.pcpm.ucl.ac.be/~gusti ... 1-1.win32-py2.4.exe


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


  1. import pygtk
  2. import gtk

  3. class HelloWorld:
  4.         def hello(self,widget,data=None):
  5.                 print "Hello World!"
  6.                
  7.         def delete_event(self,widget,data=None):
  8.                 print "delete_event"
  9.                 return gtk.FALSE
  10.        
  11.         def destroy(self,widget,data=None):
  12.                 gtk.main_quit()
  13.        
  14.         def __init__(self):
  15.                 self.window=gtk.Window(gtk.WINDOW_TOPLEVEL)
  16.                 self.window.connect("delete_event",self.delete_event)
  17.                 self.window.connect("destroy",self.destroy)
  18.                 self.window.set_border_width(10)
  19.                
  20.                 self.button=gtk.Button("Hello World!")
  21.                 self.button.connect("clicked",self.hello,None)
  22.                 self.button.connect_object("clicked",gtk.Widget.destroy,self.window)
  23.                 self.window.add(self.button)
  24.                
  25.                 self.button.show()
  26.                 self.window.show()
  27.        
  28.         def main(self):
  29.                 gtk.main()
  30.                
  31. if __ name__=="__main__":
  32.         hello=HelloWorld()
  33.         hello.main()
复制代码


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

最后恭喜一下自己,大功告成。
发表于 2005-3-28 16:43:57 | 显示全部楼层
wxWindows 不是更好用吗.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-28 17:00:13 | 显示全部楼层
Post by 弥敦路九号
wxWindows 不是更好用吗.

wxpython使用的是 gtk+ 1.2.10
pygtk 使用的是 gtk+ 2.6.4
而且,在我的gentoo linux里面,已经默认安装了 pygtk,很多东西顺手就写出来了。
回复 支持 反对

使用道具 举报

发表于 2005-3-29 12:55:40 | 显示全部楼层
好贴,谢谢兄弟。我现在也在学pygtk,有时间多交流。
回复 支持 反对

使用道具 举报

发表于 2005-3-31 10:00:59 | 显示全部楼层
up I love Python,but I'm a new hand=]
回复 支持 反对

使用道具 举报

发表于 2005-4-2 20:06:47 | 显示全部楼层
新手也不怕,只要你开始学,每天不断进步,终有一天会变成大师的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-11 08:34:07 | 显示全部楼层
多用多写就好了
回复 支持 反对

使用道具 举报

发表于 2005-4-12 09:40:41 | 显示全部楼层
pygtk有没有Glade这类东西啊,感觉直接写图形部分还是麻烦!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-13 08:05:02 | 显示全部楼层
呵呵,我觉得刚刚学的时候不要怕麻烦啊
回复 支持 反对

使用道具 举报

发表于 2005-4-15 01:31:27 | 显示全部楼层
Post by TonyGao
pygtk有没有Glade这类东西啊,感觉直接写图形部分还是麻烦!!


Boa Constructor
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表