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