diff options
Diffstat (limited to 'exercises/es/Ejercicio18.activity/ejercicio18.py')
-rw-r--r-- | exercises/es/Ejercicio18.activity/ejercicio18.py | 102 |
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() |