关于python:GTK和PYGTK的区别

GTK and PYGTK difference

许多程序员都以这种方式导入gtk和pygtk:

1
2
import gtk
import pygtk

我仅使用gtk创建了一个简单的程序,它的工作原理是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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有什么区别?


pygtkpython-gobject提供。
gtkpython-gtk2提供。

pygtk提供了pygtk.require功能,该功能允许您要求安装特定版本的gtk(或更高版本)。例如

1
2
import pygtk
pygtk.require('2.0')

只能导入gtk,但是如果其他人的gtk版本较旧,则您的程序可能无法在其他人的计算机上正常工作。


我对pygtkgtk感到困惑,因为我的测试应用程序在gtk上运行良好。

现在,我意识到gtk意味着PyGTK,它是包含与Gtk + 2.x库的绑定的Python模块。 pygtk是另一个模块,也是PyGTK的一部分,可以(但不必)用来确保Gtk +库的特定版本。

gtkpytk模块仅适用于Python 2。对于Python 3,您需要通过gi GObject Introspection模块使用Gtk +。

Python GObject自省模块(又名gigi.repository)是C库(使用GObject)和语言绑定之间的中间件层。本质上,它从底层C源代码自动生成Python绑定。 GObject是GLib对象系统,其中GLib提供了用C编写的库和应用程序的核心应用程序构建块。GObject为GTK +提供了面向对象的基于C的API以及与其他编译或解释语言(例如Python)的自动透明API绑定。 。

GTK3 +库使用Gobject,而GTK2 +库则不使用。这意味着您不能在Python版本3中使用Gtk2 +。

对于Python 2,您可以使用

1
2
3
import pygtk
pygtk.require('2.0')
import gtk

要不就

1
import gtk

对于Python 3,您需要

1
2
3
import gi
gi.require_version('Gtk','3.0')
from gi.repository import Gtk

您可以使用以下方法验证版本:

对于Gtk + 2(Python 2或3)

1
print("PyGTK %d.%d.%d Gtk+ %d.%d.%d" % (gtk.pygtk_version + gtk.gtk_version))

对于Gtk + 3(仅适用于Python 3)

1
2
3
print("Gtk %d.%d.%d" % (Gtk.get_major_version(),
                                         Gtk.get_minor_version(),
                                         Gtk.get_micro_version()))