GTK и PYGTK разница - PullRequest
       27

GTK и PYGTK разница

18 голосов
/ 18 октября 2010

многие программисты импортируют 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 ]

16 голосов
/ 18 октября 2010

pygtk предоставляется python-gobject.gtk предоставляется python-gtk2.

pygtk предоставляет функцию pygtk.require, которая позволяет вам требовать установки определенной версии gtk (или лучше).Например,

import pygtk
pygtk.require('2.0')

возможен импорт только gtk, но ваша программа может работать не так, как ожидается, на чужом компьютере, если их версия gtk старше.

2 голосов
/ 23 февраля 2017

Я был смущен 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()))
...