Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/exercises/es/17_boton-y-etiqueta_solucion.py
blob: 19b60d04778a554fd3c400586b2559c3d44649b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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()