Разница между 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
обеспечиваетсяpython-gobject
.gtk
обеспечиваетсяpython-gtk2
.
pygtk
предоставляет функциюpygtk.require
, которая позволяет требовать установки определенной версии gtk (или лучше). Напримерimport pygtk pygtk.require('2.0')
Возможен только импорт
gtk
, но ваша программа может не работать должным образом на чужой машине, если их версия gtk старше.
Я был смущен
Теперь я понимаю, чтоpygtk
vsgtk
, потому что мое тестовое приложение отлично работало сgtk
.gtk
означает PyGTK, модуль Python, содержащий привязки к Gtk+ 2.библиотека X.pygtk
- это еще один модуль, также входящий в состав PyGTK, который может (но не должен) использоваться для обеспечения определенной версии библиотеки Gtk+.Модули
Модуль PythonGObject Introspection (он жеgtk
иpytk
применяются только к Python 2. Для Python 3 вам нужно использовать Gtk+ черезgi
модуль 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()))