Tutorial de PyGTK 2.0 versión 2.3

John Finlay

Rafael Villar Burke

Lorenzo Gil Sánchez

Iñigo Serna

Fernando San Martín Woerner

Resumen

Este tutorial describe el uso del módulo de Python PyGTK.


Tabla de contenidos

1. Introducción
1.1. Exploración de PyGTK
2. Primeros Pasos
2.1. Hola Mundo en PyGTK
2.2. Teoría de Señales y Retrollamadas
2.3. Eventos
2.4. Hola Mundo Paso a Paso
3. Avanzando
3.1. Más sobre manejadores de señales
3.2. Un Hola Mundo Mejorado
4. Empaquetado de Controles
4.1. Teoría de Cajas Empaquetadoras
4.2. Las Cajas en detalle
4.3. Programa de Ejemplo de Empaquetado
4.4. Uso de Tablas para el Empaquetado
4.5. Ejemplo de Empaquetado con Tablas
5. Perspectiva General de Controles
5.1. Jerarquía de Controles
5.2. Controles sin Ventana
6. El Control de Botón
6.1. Botones Normales
6.2. Botones Biestado (Toggle Buttons)
6.3. Botones de Activación (Check Buttons)
6.4. Botones de Exclusión Mútua (Radio Buttons)
7. Ajustes
7.1. Creación de un Ajuste
7.2. Utilización de Ajustes de la Forma Fácil
7.3. Interioridades de un Ajuste
8. Controles de Rango
8.1. Barras de Desplazamiento
8.2. Controles de Escala
8.2.1. Creación de un Control de Escala
8.2.2. Métodos y Señales (bueno, al menos métodos)
8.3. Métodos Comunes de los Rangos
8.3.1. Establecimiento de la Política de Actualización
8.3.2. Obtención y Cambio de Ajustes
8.4. Atajos de Teclas y Ratón
8.5. Ejemplo de Control de Rango
9. Miscelánea de Controles
9.1. Etiquetas
9.2. Flechas (Arrow)
9.3. El Objeto Pistas (Tooltip)
9.4. Barras de Progreso (ProgressBar)
9.5. Diálogos
9.6. Imágenes
9.6.1. Pixmaps
9.7. Reglas
9.8. Barras de Estado
9.9. Entradas de Texto (Entry)
9.10. Botones Aumentar/Disminuir
9.11. Lista Desplegable (Combo)
9.12. Calendario
9.13. Selección de Color
9.14. Selectores de Fichero
9.15. Diálogo de Selección de Fuentes
10. Controles Contenedores
10.1. La Caja de Eventos (EventBox)
10.2. El control Alineador
10.3. Contenedor Fijo (Fixed)
10.4. Contenedor de Disposición (Layout)
10.5. Marcos (Frame)
10.6. Marcos Proporcionales (AspectFrame)
10.7. Controles de Panel (HPaned y VPaned)
10.8. Vistas (Viewport)
10.9. Ventanas de Desplazamiento (ScrolledWindow)
10.10. Cajas de Botones (ButtonBoxes)
10.11. Barra de Herramientas (Toolbar)
10.12. Fichas (Notebook)
10.13. Elementos incrustables y puntos de conexión (Plugs y Sockets)
10.13.1. Elementos incrustables (Plugs)
10.13.2. Puntos de Conexión (Sockets)
11. Control Menú
11.1. Creación Manual de Menús
11.2. Ejemplo de Menú Manual
11.3. Uso de la Factoria de Elementos
11.4. Ejemplo de Factoria de Elementos - ItemFactory
12. Área de Dibujo
12.1. Contexto Gráfico
12.2. Métodos de Dibujo
13. Control de Vista de Texto
13.1. Perspectiva general de la Vista de Texto
13.2. Vistas de Texto
13.3. Buffers de Texto
13.3.1. Información de estado de un Buffer de Texto
13.3.2. Creación de Iteradores de Texto
13.3.3. Inserción, Obtención y Eliminación de Texto
13.3.4. Marcas de Texto (TextMark)
13.3.5. Creación y Uso de Etiquetas de Texto
13.3.6. Inserción de Imágenes y Controles
13.4. Iteradores de Texto
13.4.1. Atributos de los Iteradores de Texto
13.4.2. Atributos de Texto de un Iterador de Texto
13.4.3. Copiar un Iterador de Texto
13.4.4. Recuperar Texto y Objetos
13.4.5. Comprobar Condiciones en un Iterador de Texto
13.4.6. Comprobar la posición en un Texto
13.4.7. Movimiento a través del Texto
13.4.8. Moverse a una Posición Determinada
13.4.9. Búsqueda en el Texto
13.5. Marcas de Texto
13.6. Etiquetas de Texto y Tablas de Etiquetas
13.6.1. Etiquetas de Texto
13.6.2. Tablas de Etiquetas de Texto
13.7. Un ejemplo de Vista de Texto
14. Control de Vista de Árbol (TreeView)
14.1. Introducción
14.2. La Interfaz y Almacén de Datos TreeModel
14.2.1. Introducción
14.2.2. Creación de Objetos TreeStore (árbol) y ListStore (lista)
14.2.3. Cómo referirse a las filas de un modelo TreeModel
14.2.4. Adición de filas
14.2.5. Eliminación de Filas
14.2.6. Gestión de los datos de las filas
14.2.7. Soporte del protocolo de Python
14.2.8. Señales de TreeModel
14.2.9. Ordenación de filas de modelos TreeModel
14.3. TreeViews (Vistas de árbol)
14.3.1. Creación de un TreeView (vista de árbol)
14.3.2. Obtención y establecimiento del Modelo de un TreeView
14.3.3. Definición de las propiedades de un TreeView
14.4. Visualizadores de Celda (CellRenderer)
14.4.1. Introducción
14.4.2. Tipos de Visualizadores CellRenderer
14.4.3. Propiedade de un CellRenderer
14.4.4. Atributos de un CellRenderer
14.4.5. Función de Datos de Celda
14.4.6. Etiquetas de Marcado en CellRendererText
14.4.7. Celdas de Texto Editables
14.4.8. Celdas Biestado Activables
14.4.9. Programa de Ejemplo de Celda Editable and Activable
14.5. TreeViewColumns (columnas de vista de árbol)
14.5.1. Creación de TreeViewColumns (columnas de vista de árbol)
14.5.2. Gestión de los CellRenderers (Intérpretes de celda)
14.6. Manipulación de TreeViews
14.6.1. Gestión de las Columnas
14.6.2. Expansión y Contracción de Filas Hijas
14.7. Señales de TreeView
14.8. Selecciones TreeSelections
14.8.1. Obtención de TreeSelection
14.8.2. Modos de una selección TreeSelection
14.8.3. Obtención de la Selección
14.8.4. Uso de una Función de TreeSelection
14.8.5. Selección y Deselección de Filas
14.9. Arrastrar y Soltar en TreeView
14.9.1. Reordenación mediante Arrastrar y Soltar
14.9.2. Arrastar y Soltar Externo
14.9.3. Ejemplo de Arrastrar y Soltar en TreeView
14.10. TreeModelSort y TreeModelFilter
14.10.1. TreeModelSort (Modelo de Árbol Ordenado)
14.10.2. TreeModelFilter (Modelo de árbol filtrado)
14.11. El Modelo de Árbol Genérico (GenericTreeModel)
14.11.1. Visión general de GenericTreeMode
14.11.2. La Interfaz GenericTreeModel
14.11.3. Adición y Eliminación de Filas
14.11.4. Gestión de Memoria
14.11.5. Otras Interfaces
14.11.6. Utilización de GenericTreeModel
14.12. El Visualizador de Celda Genérico (GenericCellRenderer)
15. Nuevos Controles de PyGTK 2.2
15.1. Portapapeles (Clipboard)
15.1.1. Creación de un objeto Clipboard (Portapapeles)
15.1.2. Utilización de Clipboards con elementos Entry, Spinbutton y TextView
15.1.3. Incorporación de datos en un portapapeles
15.1.4. Obtención de los Contenidos del Portapapeles
15.1.5. Ejemplo de Portapapeles
16. Nuevos Controles de PyGTK 2.4
16.1. Objetos de Acción (Action) y Grupo de Acciones (ActionGroup)
16.1.1. Acciones (Actions)
16.1.2. Grupos de Acciones (ActionGroups)
16.2. Controles de Lista Desplegable (ComboBox) y Lista Desplegable con Entrada (ComboBoxEntry)
16.2.1. Controles ComboBox
16.2.2. Controles ComboBoxEntry
16.3. Controles Botón de Color y de Fuente (ColorButton y FontButton)
16.3.1. Control Botón de Color (ColorButton)
16.3.2. Control Botón de Fuente (FontButton)
16.4. Controles de Entrada con Completado (EntryCompletion)
16.5. Controles de Expansión (Expander)
16.6. Selecciones de Archivos mediante el uso de Controles basados en el Selector de Archivos FileChooser
16.7. El gestor de Interfaces de Usuario UIManager
16.7.1. Perspectiva general
16.7.2. Creación de un gestor UIManager
16.7.3. Adición y Eliminación de Grupos de Acciones (ActionGroups)
16.7.4. Descripciones de la Interfaz de Usuario
16.7.5. Adición y Eliminación de Descripciones de Interfaz de Usuario
16.7.6. Acceso a los Controles de la Interfaz de Usuario
16.7.7. Ejemplo sencillo de Gestor de Interfaz UIManager
16.7.8. Combinación de Descripciones de Interfaz de Usuario
16.7.9. Señales de UIManager
17. Controles sin documentar
17.1. Etiqueta de Aceleración (Atajo)
17.2. Menú de Opciones
17.3. Elementos de Menú
17.3.1. Elemento de Menú de Activación
17.3.2. Elemento de Menú de Exclusión Mútua
17.3.3. Elemento de Menú de Separación
17.3.4. Elemento de Menú de Cascada
17.4. Curvas
17.5. Diálogo de Mensaje
17.6. Curva Gamma
18. Establecimiento de Atributos de Controles
18.1. Métodos de Banderas de los Controles
18.2. Métodos de Visualización de Controles
18.3. Atajos de Teclado de los Controles
18.4. Métodos relacionados con el Nombre de los Controles
18.5. Estilo de los Controles
19. Temporizadores, Entrada/Salida y Funciones de Inactividad
19.1. Temporizadores
19.2. Monitorizar la Entrada/Salida
19.3. Funciones de Inactividad
20. Procesamiento Avanzado de Eventos y Señales
20.1. Métodos de Señales
20.1.1. Conectar y Desconectar Manejadores de Señal
20.1.2. Bloqueo y Desbloqueo de Manejadores de Señal
20.1.3. Emisión y Parada de Señales
20.2. Emisión y Propagación de Señales
21. Tratamiento de Selecciones
21.1. Descripción General de la Selección
21.2. Recuperar la Selección
21.3. Proporcionar la Selección
22. Arrastrar y Soltar
22.1. Descripción General de Arrastrar y Soltar
22.2. Propiedades de Arrastrar y Soltar
22.3. Métodos de Arrastrar y Soltar
22.3.1. Configuración del Control Origen
22.3.2. Señales en el Control Fuente
22.3.3. Configuración de un Control Destino
22.3.4. Señales en el Control Destino
23. Ficheros rc de GTK+
23.1. Funciones para Ficheros rc
23.2. Formato de los Ficheros rc de GTK+
23.3. Ejemplo de fichero rc
24. Scribble: Un Ejemplo Sencillo de Programa de Dibujo
24.1. Perspectiva General de Scribble
24.2. Manejo de Eventos
24.2.1. Scribble - Manejo de Eventos
24.3. El Control del Área de Dibujo, y Dibujar
25. Trucos para Escribir Aplicaciones PyGTK
25.1. El usario debería manejar la interfaz, no al contrario
25.2. Separa el modelo de datos de la interfaz
25.3. Cómo separar los Métodos de Retrollamada de los Manejadores de Señal
25.3.1. Introducción
25.3.2. Herencia
25.3.3. Herencia aplicada a PyGTK
26. Contribuir
27. Créditos
27.1. Créditos Original de GTK+
28. Copyright del Tutorial y Nota de Permisos
A. Señales de GTK
A.1. gtk.Object
A.2. gtk.Widget
A.3. GtkData
A.4. gtk.Container
A.5. gtk.Calendar
A.6. gtk.Editable
A.7. gtk.Notebook
A.8. gtk.List
A.9. gtk.MenuShell
A.10. gtk.Toolbar
A.11. gtk.Button
A.12. gtk.Item
A.13. gtk.Window
A.14. gtk.HandleBox
A.15. gtk.ToggleButton
A.16. gtk.MenuItem
A.17. gtk.CheckMenuItem
A.18. gtk.InputDialog
A.19. gtk.ColorSelection
A.20. gtk.StatusBar
A.21. gtk.Curve
A.22. gtk.Adjustment
B. Ejemplos de Código
B.1. scribblesimple.py
C. ChangeLog

Lista de figuras

2.1. Ventana Simple PyGTK
2.2. Programa de ejemplo: Hola Mundo
3.1. Ejemplo mejorado de Hola Mundo
4.1. Empaquetado: Cinco variaciones
4.2. Empaquetado con Spacing y Padding
4.3. Empaquetado con pack_end()
4.4. Empaquetado haciendo uso de una Tabla
6.1. Botón con Pixmap y Etiqueta
6.2. Ejemplo de Botón Biestado
6.3. Ejemplo de Botón de Activación
6.4. Ejemplo de Botones de Exclusión Mútua
8.1. Ejemplo de Controles de Rango
9.1. Ejemplos de Etiquetas
9.2. Ejemplos de Botones con Flechas
9.3. Ejemplo de Pistas
9.4. Ejemplo de Barra de Progreso
9.5. Ejemplo de Imágenes en Botones
9.6. Ejemplo de Pixmap en un Botón
9.7. Ejemplo de Ventana con Forma
9.8. Ejemplo de Reglas
9.9. Ejemplo de Barra de Estado
9.10. Ejemplo de Entrada
9.11. Ejemplo de Botón Aumentar/Disminuir
9.12. Ejemplo de Calendario
9.13. Ejemplo de Diálogo de Selección de Color
9.14. Ejemplo de Selección de Ficheros
9.15. Diálogo de Selección de Fuentes
10.1. Ejemplo de Caja de Eventos
10.2. Ejemplo de Fijo
10.3. Ejemplo de Disposición
10.4. Ejemplo de Marco
10.5. Ejemplo de Marco Proporcional
10.6. Ejemplo de Panel
10.7. Ejemplo de Ventana de Desplazamiento
10.8. Ejemplo de Barra de Herramientas
10.9. Ejemplo de Fichas
11.1. Ejemplo de Menú
11.2. Ejemplo de Factoria de Elementos
12.1. Ejemplo de Área de Dibujo
13.1. Ejemplo básico de Vista de Texto
13.2. Ejemplo de Vista de Texto
14.1. Programa elemental de ejemplo de TreeView
14.2. TreeViewColumns con CellRenderers
14.3. Función de Datos de Celda
14.4. Ejemplo de Listado de Archivos Utilizando Funciones de Datos de Celda
14.5. Etiquetas de Marcado para CellRendererText
14.6. Celdas Editables y Activables
14.7. Flecha de Expansión en la segunda Columna
14.8. Ejemplo de Arrastrar y Soltar en TreeView
14.9. Ejemplo de TreeModelSort
14.10. Ejemplo de Visibilidad en TreeModelFilter
14.11. Programa de Ejemplo de Modelo de Árbol Genérico
15.1. Programa de ejemplo de Portapapeles
16.1. Ejemplo Simple de Acción
16.2. Ejemplo Básico de Acción
16.3. Ejemplo de Acciones
16.4. Ejemplo de ActionGroup
16.5. ComboBox Básica
16.6. ComboBox con una Disposición Asociada
16.7. ComboBoxEntry Básica
16.8. Ejemplo de Botón de Color - ColorButton
16.9. Ejemplo de Botón de Fuente - FontButton
16.10. Entrada con Completado (EntryCompletion)
16.11. Control de Expansión
16.12. Ejemplo de Selección de Archivos
16.13. Programa sencillo de Gestor de Interfaz de Usuario UIManager
16.14. Ejemplo UIMerge
21.1. Ejemplo de Obtención de la Selección
21.2. Ejemplo de Fijar la Selección
22.1. Ejemplo de Arrastrar y Soltar
24.1. Ejemplo de Programa de Dibujo Scribble
24.2. Ejemplo sencillo - Scribble

Lista de tablas

22.1. Señales del Control Fuente
22.2. Señales del Control Destino