python gtk pygtk gtk2

python - Diferencia GTK y PYGTK



glade python (2)

muchos programadores importan tanto gtk como pygtk de esta manera:

import gtk import pygtk

He creado un programa simple usando solo gtk y funciona:

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()

Entonces ... la pregunta es: ¿cuál es la diferencia entre GTK y PYGTK?


pygtk es proporcionado por python-gobject . gtk es proporcionado por python-gtk2 .

pygtk proporciona la función pygtk.require que le permite pygtk.require que se pygtk.require una determinada versión de gtk (o superior). Por ejemplo

import pygtk pygtk.require(''2.0'')

solo es posible importar gtk , pero es posible que su programa no funcione como se espera en la máquina de otra persona si su versión de gtk es más antigua.


pygtk vs gtk me confundió porque mi aplicación de prueba funcionó bien con gtk .

Ahora me doy cuenta de que gtk significa PyGTK , el módulo de Python que contiene enlaces a la biblioteca Gtk + 2.x. pygtk es otro módulo, también parte de PyGTK , que puede (pero no es necesario) usarlo para garantizar una determinada versión de la biblioteca Gtk + .

Los módulos gtk y pytk aplican solo a Python 2. Para Python 3 necesitas usar Gtk + a través del módulo de introspección gi GObject .

El módulo de introspección GObject de Python (también conocido como gi o gi.repository ) es una capa de middleware entre las bibliotecas de C (que utiliza GObject ) y los enlaces de idiomas. Esencialmente, genera automáticamente enlaces de Python a partir del código fuente C subyacente. GObject es el sistema de objetos GLib , donde GLib proporciona los bloques de creación de aplicaciones centrales para bibliotecas y aplicaciones escritas en C. GObject proporciona GTK + con API basadas en C orientadas a objetos y enlaces API transparentes automáticos a otros lenguajes compilados o interpretados (como Python) .

La biblioteca GTK3 + usa GObject pero la biblioteca GTK2 + no. Esto significa que no puedes usar Gtk2 + con Python versión 3.

Para Python 2 usarías

import pygtk pygtk.require(''2.0'') import gtk

o solo

import gtk

Para Python 3 necesitas

import gi gi.require_version(''Gtk'',''3.0'') from gi.repository import Gtk

Puedes verificar las versiones con:

Para Gtk + 2 (Python 2 o 3)

print("PyGTK %d.%d.%d Gtk+ %d.%d.%d" % (gtk.pygtk_version + gtk.gtk_version))

Para Gtk + 3 (solo Python 3)

print("Gtk %d.%d.%d" % (Gtk.get_major_version(), Gtk.get_minor_version(), Gtk.get_micro_version()))