Ubuntu下PyGtk的开发之 Base.py


  大致感觉PyGtk不难,使用上和Tkinter之类的都差不多。网上说当把逻辑代码和视图代码结合在一起时,PyGtk做的是最好的,应该能在以后的学习中体会到吧。但现在对某些东西仍有疑惑。

  PyGtk2.0是一个Python模块的集合,提供了对GTK+2.X的Python接口。

  GTK(GIMP Toolkit)是创建图形用户界面的一个库,完全用C语言编写。

Base.py

#!/usr/bin/envpython
#examplebase.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()

为什么可以“import gtk”呢?gtk是gtk.py文件吗?好像不是,我没找到。

在Windows和Linux两个操作系统之下注释掉“import pygtk”和“pygtk.require(2.0)”程序照常可以运行,也就是说pygtk根本没用上。可以看见代码里的调用也只是调用了gtk。但gtk是C语言写的啊,为什么在python里没通过pygtk却直接可以调用访问了呢?

搞不清pygtk和gtk之间的关系,和各自的组织结构。

------------------------------------------------------

 去食堂买饭等待的时候突然想起了Eclipse,为什么不用CTRL+CLICK的方式点击查看gtk文件呢?这样不就知道它的位子了么?事实证明这招不好使,最终是使用Debug的方法跟踪找到的。

“import gtk”其实是执行了“C:\Python25\Lib\site-packages\gtk-2.0\gtk\__init__.py”文件。
在这个文件中有一句“from gtk import _gtk”导入了gtk文件夹下的_gtk.pyd文件。下面还有一句“from gtk._gtk import *”是从这个.pyd文件中导入的。其中包含了“Label”,“Button”等等等等。


“gtk.Window(gtk.WINDOW_TOPLEVEL)”中的“Window”和“WINDOW_TOPLEVEL”都来自于gtk中的gdk,可以使用“from gtk import gdk”“dir(gdk)”查看。

相关内容