21

许多程序员以这种方式同时导入 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 有什么区别?

4

2 回答 2

17

pygtk由 提供python-gobjectgtk由 提供python-gtk2

pygtk提供pygtk.require允许您要求安装某个版本的 gtk(或更高版本)的功能。例如

import pygtk
pygtk.require('2.0')

仅导入gtk是可能的,但如果他们的 gtk 版本较旧,您的程序可能无法在其他人的机器上按预期工作。

于 2010-10-18T17:19:32.667 回答
4

pygtk我对 vs感到困惑,gtk因为我的测试应用程序在gtk.

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

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

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

GTK3+ 库使用Gobject,但 GTK2+ 库不使用。这意味着您不能将 Gtk2+ 与 Python 版本 3 一起使用。

对于 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()))
于 2017-02-23T12:51:48.673 回答