Я был смущен pygtk
против gtk
, потому что мое тестовое приложение работало нормально с gtk
.
Теперь я понимаю, что gtk
означает PyGTK , модуль Python, который содержит привязки к библиотеке Gtk + 2.x. pygtk
- это другой модуль, также входящий в состав PyGTK , который можно (но не обязательно) использовать для обеспечения определенной версии библиотеки Gtk + .
Модули gtk
и pytk
применяются только к Python 2. Для Python 3 вам нужно использовать Gtk + через модуль gi
GObject Introspection .
Модуль Python GObject Introspection (он же gi
или gi.repository
) представляет собой промежуточный уровень между библиотеками C (использующими GObject ) и привязками языка. По сути, он автоматически генерирует привязки Python из исходного исходного кода C. GObject - это GLib Система объектов , где GLib предоставляет базовые строительные блоки для библиотек и приложений, написанных на C. GObject предоставляет GTK + объектно-ориентированные API на основе C и автоматические прозрачные привязки API к другим скомпилированным или интерпретированным языкам (таким как Python).
Библиотека 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()))