GTK和PYGTK的区别
很多程序员都是这样同时导入gtk和pygtk的:
import gtk
import pygtk
我创建了一个只用gtk的简单程序,它可以正常运行:
import gtk
window = gtk.Window()
window.set_size_request(800, 700)
window.set_position(gtk.WIN_POS_CENTER)
window.connect("destroy", gtk.main_quit)
button = gtk.Button("Vai")
button.set_size_request(30, 35)
button.connect("clicked", naviga)
testo = gtk.Entry()
h = gtk.HBox()
h.pack_start(testo)
h.pack_start(button)
window.add(h)
window.show_all()
gtk.main()
那么... 问题是:GTK和PYGTK有什么区别呢?
2 个回答
我之前对 pygtk
和 gtk
感到困惑,因为我的测试应用在 gtk
下运行得很好。
现在我明白了,gtk
指的是 PyGTK,这是一个 Python 模块,它包含了与 Gtk+ 2.x 库的连接。pygtk
是另一个模块,同样属于 PyGTK,可以(但不一定需要)用来确保使用特定版本的 Gtk+ 库。
需要注意的是,gtk
和 pytk
模块只适用于 Python 2。对于 Python 3,你需要通过 gi
GObject Introspection 模块来使用 Gtk+。
Python 的 GObject Introspection 模块(也叫 gi
或 gi.repository
)是 C 库(使用 GObject)和语言绑定之间的中间层。简单来说,它会根据底层的 C 源代码自动生成 Python 的连接代码。GObject 是 GLib 对象系统,而 GLib 为用 C 编写的库和应用程序提供了核心构建模块。GObject 为 GTK+ 提供了面向对象的 C 基础 API,并且可以自动透明地将 API 连接到其他编译或解释的语言(比如 Python)。
GTK3+ 库使用 Gobject,而 GTK2+ 库则不使用。这意味着你不能在 Python 3 中使用 Gtk2+。
对于 Python 2,你可以使用
import pygtk
pygtk.require('2.0')
import gtk
或者直接使用
import gtk
对于 Python 3,你需要使用
import gi
gi.require_version('Gtk','3.0')
from gi.repository import Gtk
你可以通过以下方式检查版本:
对于 Gtk+ 2(Python 2 或 3)
print("PyGTK %d.%d.%d Gtk+ %d.%d.%d" % (gtk.pygtk_version + gtk.gtk_version))
对于 Gtk+ 3(仅限 Python 3)
print("Gtk %d.%d.%d" % (Gtk.get_major_version(),
Gtk.get_minor_version(),
Gtk.get_micro_version()))
pygtk
是由 python-gobject
提供的。
gtk
是由 python-gtk2
提供的。
pygtk
提供了一个叫 pygtk.require
的功能,这个功能可以让你指定需要安装某个版本的 gtk(或者更高版本)。比如说:
import pygtk
pygtk.require('2.0')
只导入 gtk
是可以的,但如果别人的电脑上 gtk 的版本比较旧,你的程序可能就无法正常运行。