Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/exercises/es/Ejercicio18.activity/ejercicio18.py
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/es/Ejercicio18.activity/ejercicio18.py')
-rw-r--r--exercises/es/Ejercicio18.activity/ejercicio18.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/exercises/es/Ejercicio18.activity/ejercicio18.py b/exercises/es/Ejercicio18.activity/ejercicio18.py
new file mode 100644
index 0000000..6282eb7
--- /dev/null
+++ b/exercises/es/Ejercicio18.activity/ejercicio18.py
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+# 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 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 para cerrar 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 callback del 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.')
+
+ def __window_destroy_cb(self, window):
+ """Callback para salir del programa cuando la ventana está cerrada.
+
+ No modifique esto."""
+ Gtk.main_quit()