Разница между 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 старше.
Я был смущен
Теперь я понимаю, чтоpygtkvsgtk, потому что мое тестовое приложение отлично работало с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()))