Pasar+datos+entre+Escenas

Para pasar datos entre escenas, tenemos un procedimiento sencillo. Para verlo, vamos a escribir, de ejemplo, un programa que cambie entre dos escenas. La primera muestra un texto "Hola" y la segunda (a la que se cambia cuando se pulsa el botón del ratón) muestra "Adiós":

code format="python"
 * 1) -*- coding: utf-8 -*-

import pilas

pilas.iniciar

class Escena_1(pilas.escena.Base):

def __init__(self): pilas.escena.Base.__init__(self)

def iniciar(self): pilas.actores.Texto("Hola") pilas.eventos.click_de_mouse.conectar(self.cambiar)

def cambiar(self, evento): pilas.cambiar_escena(Escena_2)

class Escena_2(pilas.escena.Base):

def __init__(self): pilas.escena.Base.__init__(self)

def iniciar(self): pilas.actores.Texto(u"Adiós")

pilas.cambiar_escena(Escena_1)

pilas.ejecutar code

Modifiquémoslo ahora para pasar un nombre desde la Escena_1 a la Escena_2. Digamos que queremos pasarle el nombre de "Pepe" para que la segunda escena diga "Adiós, Pepe". Lo primero es muy lógico; en la linea en la que cambiamos a la Escena_2, le pasamos como parámetro el nombre de "Pepe":

code format="python" pilas.cambiar_escena(Escena_2("Pepe")) code

Y lo segundo es modificar la clase de la Escena_2 para que sepa recoger ese dato. Y no es complicado; consiste en que en su método __init__ añadamos un argumento más y lo asociemos a una variable de la escena:

code format="python" class Escena_2(pilas.escena.Base):

def __init__(self, nombre): pilas.escena.Base.__init__(self) self.nombre = nombre code

Finalmente, lo podemos usar como queremos, al mostrar el mensaje:

code format="python" def iniciar(self): pilas.actores.Texto(u"Adiós, " + self.nombre) code

¡Y eso es todo!

El programa completo quedaría así:

code format="python"
 * 1) -*- coding: utf-8 -*-

import pilas

pilas.iniciar

class Escena_1(pilas.escena.Base):

def __init__(self): pilas.escena.Base.__init__(self)

def iniciar(self): pilas.actores.Texto("Hola") pilas.eventos.click_de_mouse.conectar(self.cambiar)

def cambiar(self, evento): pilas.cambiar_escena(Escena_2("Pepe"))

class Escena_2(pilas.escena.Base):

def __init__(self, nombre): pilas.escena.Base.__init__(self) self.nombre = nombre

def iniciar(self): pilas.actores.Texto(u"Adiós, " + self.nombre)

pilas.cambiar_escena(Escena_1)

pilas.ejecutar code