Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/exercises/es/Ejercicio18.activity/ejercicio18_solucion.py
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/es/Ejercicio18.activity/ejercicio18_solucion.py')
-rw-r--r--exercises/es/Ejercicio18.activity/ejercicio18_solucion.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/exercises/es/Ejercicio18.activity/ejercicio18_solucion.py b/exercises/es/Ejercicio18.activity/ejercicio18_solucion.py
new file mode 100644
index 0000000..c3d1b08
--- /dev/null
+++ b/exercises/es/Ejercicio18.activity/ejercicio18_solucion.py
@@ -0,0 +1,104 @@
+# coding=utf-8
+
+"""Convertir un programa GTK+ simple para ser una actividad de Sugar.
+
+Usted debe convertir la simple programa GTK+ del ejercicio 17 como una
+actividad de Sugar.
+
+Todos los demás archivos de la actividad (activity.info, setup.py, etc.) se han
+previsto ya, simplemente debe modificar el código de este archivo para derivar
+la clase desde sugar3.activity.activity.Activity en lugar de desde Gtk.Window y
+hacer algunos otros cambios.
+
+ 1. Quite la línea “!#/usr/bin/python” desde el principio del archivo. La
+ primera línea del archivo debe ser ahora “# coding=utf-8”.
+ 2. Cambiar el nombre de la clase de “Ejercicio18Actividad”.
+ 3. Agregar un parámetro ‘handle’ al método __init__ y se propagan al
+ constructor principal en la llamada super().
+ 4. Retire el título de la ventana de la llamada a super() de la constructor.
+ 5. Retire la llamada a set_default_size() y el callback para la señal de
+ ‘destroy’ de la ventana.
+ 6. Agregar una barra de herramientas de la actividad (ToolbarBox) y agregue un
+ botón de actividad (ActivityToolbarButton) y un botón de parada
+ (StopButton) a la misma.
+ 7. Cambie el self.add() a self.set_canvas().
+ 8. En un terminal, cambie a este directorio y ejecute ‘./setup.py dev’ para
+ añadir la actividad de Sugar en su ordenador.
+ 9. En una terminal, ejecute ‘sugar-emulator’ y probar la actividad.
+
+Tenga en cuenta que de las declaraciones de ‘import’ necesarios ya se han
+añadido al archivo.
+
+No te olvides de documentar los nuevos métodos que se agregan.
+
+Sugerencia: El código necesario para el paso 6 es:
+ # Crear la caja de herramientas de actividad estándar.
+ toolbar_box = ToolbarBox()
+ self.set_toolbar_box(toolbar_box)
+ toolbar_box.show()
+
+ main_toolbar = toolbar_box.toolbar
+
+ activity_toolbar_button = widgets.ActivityToolbarButton(self)
+ main_toolbar.insert(activity_toolbar_button, 0)
+ activity_toolbar_button.show()
+
+ stop_button = widgets.StopButton(self)
+ stop_button.show()
+ main_toolbar.insert(stop_button, -1)
+"""
+
+from gi.repository import Gtk
+from sugar3.activity import activity, widgets
+from sugar3.graphics.toolbarbox import ToolbarBox
+from sugar3.graphics.toolbutton import ToolButton
+
+
+class Ejercicio18Actividad(activity.Activity):
+ """Una actividad simple que muestra una etiqueta y un botón."""
+ def __init__(self, handle):
+ super(Ejercicio18Actividad, self).__init__(handle)
+
+ # Crear la caja de herramientas de actividad estándar.
+ toolbar_box = ToolbarBox()
+ self.set_toolbar_box(toolbar_box)
+ toolbar_box.show()
+
+ main_toolbar = toolbar_box.toolbar
+
+ activity_toolbar_button = widgets.ActivityToolbarButton(self)
+ main_toolbar.insert(activity_toolbar_button, 0)
+ activity_toolbar_button.show()
+
+ stop_button = widgets.StopButton(self)
+ stop_button.show()
+ main_toolbar.insert(stop_button, -1)
+
+ # 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.set_canvas(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 callback para el botón.
+ 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.')