PyGTK 2.0 is a set of Python modules which provide a Python
interface to GTK+ 2.X. Throughout the rest of this document PyGTK refers to
the 2.X version of PyGTK and GTK and GTK+ refer to the 2.X version of GTK+.
The primary web site for PyGTK is www.pygtk.org. The primary author of
who is assisted by the developers listed in the AUTHORS file in the
PyGTK distribution and the PyGTK community.
Python is an extensible, object-oriented interpreted programming
language which is provided with a rich set of modules providing access to a
large number of operating system services, internet services (such as HTML,
XML, FTP, etc.), graphics (including OpenGL, TK, etc.), string handling
functions, mail services (IMAP, SMTP, POP3, etc.), multimedia (audio, JPEG)
and cryptographic services. In addition there are many other modules
available from third parties providing many other services. Python is
licensed under terms similar to the LGPL license and is available for Linux,
Unix , Windows and Macintosh operating systems. More information on Python
is available at www.python.org . The primary Author of Python is:
GTK (GIMP Toolkit) is a library for creating graphical user
interfaces. It is licensed using the LGPL license, so you can develop open
software, free software, or even commercial non-free software using GTK
without having to spend anything for licenses or royalties.
It's called the GIMP toolkit because it was originally written for
developing the GNU Image Manipulation Program (GIMP), but GTK has now been
used in a large number of software projects, including the GNU Network
Object Model Environment (GNOME) project. GTK is built on top of GDK (GIMP
Drawing Kit) which is basically a wrapper around the low-level functions for
accessing the underlying windowing functions (Xlib in the case of the X
windows system). The primary authors of GTK are:
GTK is currently maintained by:
GTK is essentially an object oriented application programmers
interface (API). Although written completely in C, it is implemented using
the idea of classes and callback functions (pointers to functions).
There is also a third component called GLib which contains a few
replacements for some standard calls, as well as some additional functions
for handling linked lists, etc. The replacement functions are used to
increase GTK's portability, as some of the functions implemented here are
not available or are nonstandard on other unixes such as
g_strerror(). Some also contain enhancements to the
libc versions, such as g_malloc that has enhanced
In version 2.0, GLib has picked up the type system which forms the
foundation for GTK's class hierarchy, the signal system which is used
throughout GTK, a thread API which abstracts the different native thread
APIs of the various platforms and a facility for loading modules.
As the last component, GTK uses the Pango library for
internationalized text output.
This tutorial describes the Python interface to GTK+ and is based
on the GTK+ 2.0 Tutorial written by Tony Gale and Ian Main. This tutorial
attempts to document as much as possible of PyGTK, but is by no means
This tutorial assumes some understanding of Python, and how to
create and run Python programs. If you are not familiar with Python, please
read the Python
Tutorial first. This tutorial does not assume an understanding of
GTK; if you are learning PyGTK to learn GTK, please comment on how you found
this tutorial, and what you had trouble with. This tutorial does not
describe how to compile or install Python, GTK+ or PyGTK.
This tutorial is based on:
- GTK+ 2.0 through GTK+ 2.4
- Python 2.2
- PyGTK 2.0 through PyGTK 2.4
The examples were written and tested on a RedHat 9.0 system.
This document is a "work in progress". Please look for updates on
I would very much like to hear of any problems you have learning PyGTK
from this document, and would appreciate input as to how it may be improved.
Please see the section on Contributing for further information. If you
encounter bugs please file a bug at bugzilla.gnome.org against the pygtk
project. The information at www.pygtk.org about
Bugzilla may help.
The PyGTK 2.0 Reference Manual is available at
http://www.pygtk.org/pygtkreference. It describes in detail the PyGTK classes.
The PyGTK website (www.pygtk.org) contains other resources
useful for learning about PyGTK including a link to the extensive FAQ and other articles and
tutorials and an active maillist and IRC channel (see www.pygtk.org for
Johan Dahlin has written a small Python program (pygtkconsole.py)
that runs on Linux and allows interactive exploration of PyGTK. The program
provides a Python-like interactive interpreter interface that communicates
with a child process that executes that entered commands. The PyGTK modules
are loaded by default. A simple example session is:
moe: 96:1095$ pygtkconsole.py
Python 2.2.2, PyGTK 1.99.14 (Gtk+ 2.0.6)
Interactive console to manipulate GTK+ widgets.
>>> def hello(b):
... print "Hello, World!"
>>> b.connect('clicked', hello)
>>> Hello, World!
>>> b.set_label("Hi There")
This creates a window containing a button which prints a message
('Hello, World!') when clicked. This program makes it easy to try out
various GTK widgets and PyGTK interfaces.
I also use a program that was developed by Brian McErlean as
recipe 65109 with some mods to make it run with PyGTK 2.X. I call it
works similar to the pygtkconsole.py
Both of these programs are known not to work on Microsoft
Windows because they rely on Unix specific interfaces.