Подтвердить что ты не робот

Разность 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?

4b9b3361

Ответ 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()))