diff options
Diffstat (limited to 'exercises/es/17_boton-y-etiqueta_solucion.py')
-rw-r--r-- | exercises/es/17_boton-y-etiqueta_solucion.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/exercises/es/17_boton-y-etiqueta_solucion.py b/exercises/es/17_boton-y-etiqueta_solucion.py new file mode 100644 index 0000000..19b60d0 --- /dev/null +++ b/exercises/es/17_boton-y-etiqueta_solucion.py @@ -0,0 +1,78 @@ +#!/usr/bin/python +# coding=utf-8 + +"""Este programa debe mostrar una ventana GTK + que contiene un botón y una +etiqueta. + +Debe añadir dos widgets a la caja en la ventana: un Gtk.Button y un Gtk.Label. + +El Gtk.Button debe mostrar el texto ‘Cambiar etiqueta’. El Gtk.Label debe +mostrar el texto ‘Etiqueta inicial’. + +Después de añadir los dos widgets, debe conectar un callback a la señal +‘clicked’ del botón. En este callback, deberá cambiar el texto de la Gtk.Label +a ‘Etiqueta final’. Esto significa que cuando se ejecuta el programa y se pulsa +el botón, la etiqueta debe modificar su texto. + +Usted puede encontrar documentación de la señal ‘clicked’ de Gtk.Button aquí: + https://developer.gnome.org/gtk3/stable/GtkButton.html#GtkButton-clicked + +No te olvides de documentar los nuevos métodos que se agregan. + +Consejo: No te olvides de llamar al método show() del botón y la etiqueta para +que sean visibles después de añadirlos a la caja. +""" + +from gi.repository import Gtk + + +class SimpleWindow(Gtk.Window): + """Una ventana simple que muestra una etiqueta y un botón.""" + def __init__(self): + super(SimpleWindow, self).__init__(title='Ventana Simple') + + # Establecer un tamaño predeterminado de la ventana. + self.set_default_size(200, 200) + + # Configurar un callback de cierre de la ventana. No modifique esto. + self.connect('destroy', self.__window_destroy_cb) + + # Agregar una caja de la ventana. + box = Gtk.Box() + box.set_orientation(Gtk.Orientation.VERTICAL) + box.set_spacing(8) + box.set_border_width(8) + box.show() + self.add(box) + + # Creación y configuración de la etiqueta y el botón. + label = Gtk.Label('Etiqueta inicial.') + label.show() + box.pack_start(label, True, True, 0) + + button = Gtk.Button('Cambiar Etiqueta') + button.show() + box.pack_start(button, False, True, 0) + + # Conecte el callback para el botón. + button.connect('clicked', self.__button_clicked_cb) + + # Guarde la etiqueta como una variable de objeto que se pueda acceder + # desde el botón de callback. + self._label = label + + def __button_clicked_cb(self, button): + """Callback para cambiar el texto de la etiqueta cuando se hace clic en + el botón.""" + self._label.set_text('Etiqueta final.') + + def __window_destroy_cb(self, window): + """Callback para salir del programa cuando la ventana está cerrada. + + No modifique esto.""" + Gtk.main_quit() + + +# Ejecute el programa. No modifique esto. +SimpleWindow().show() +Gtk.main() |