Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/JAMEntryText.py
diff options
context:
space:
mode:
Diffstat (limited to 'JAMEntryText.py')
-rw-r--r--JAMEntryText.py785
1 files changed, 391 insertions, 394 deletions
diff --git a/JAMEntryText.py b/JAMEntryText.py
index 47dc2da..23bd90b 100644
--- a/JAMEntryText.py
+++ b/JAMEntryText.py
@@ -1,13 +1,10 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# BiblioJAM (Versión 2.0) - 18/04/2011 - CeibalJAM! - Uruguay
-# JAMEntryText.py por: Flavio Danesse fdanesse@gmail.com
-# https://sites.google.com/site/flaviodanesse/
-# https://sites.google.com/site/sugaractivities/
-# http://codigosdeejemplo.blogspot.com/
+import pygame
+import gc
+import sys
-import pygame, gc, sys
from pygame.locals import *
gc.enable()
pygame.font.init()
@@ -16,298 +13,298 @@ import JAMGlobals as VG
from JAMLabel import JAMLabel
class JAMEntryText(pygame.sprite.OrderedUpdates):
- def __init__(self):
- pygame.sprite.OrderedUpdates.__init__(self)
- self.buffertext= ""
-
- # teclas
- self.handlekey= None
-
- #self.sensitive= False
-
- self.texto= {"fondo":VG.get_blanco(), "tipo":pygame.font.get_default_font(), "tamanio": 20, "color":VG.get_negro()}
-
- self.separador= 5
- self.posicion= (0,0)
-
- self.label_buffer= None
- self.label_promp = None
- self.frame= pygame.sprite.Sprite()
-
- self.JAMObjects= {"base":self.frame, "etiqueta_buffer":self.label_buffer, "promp":self.label_promp,
- "buffertext": self.buffertext, "handle_key":self.handlekey}
-
- self.Reconstruye_JAMEntryText(["todo"])
-
- # ------------- GETS ------------------------
- def get_tamanio(self):
- return (self.frame.rect.w, self.frame.rect.h)
-
- # ------------ SETEOS -----------------------
- #def set_mouse_sensitive(self, valor):
- # self.sensitive= bool(valor)
-
- def set_handle_key(self, valor):
- ''' Habilita y desabilita la detección de eventos de tecla.
- Por defecto no lo hace ya que JAMEntryText está pensado como objeto parte de JAMBoardEntryText. '''
- if bool(valor) == True:
- self.handlekey= JAMHandleKeyEvent(self)
- else:
- self.handlekey= None
-
- def set_callback_enter(self, callback=None):
- ''' Setea una función para ejecutarse cuando el usuario presione enter.
- La función debe recibir un string para el buffer de texto de JAMEntryText'''
- if self.handlekey:
- self.handlekey.callback_enter= callback
-
- def set_buffer(self, texto):
- ''' Setea el buffer de texto de JAMEntryText. '''
- if texto != self.buffertext:
- self.buffertext = texto
- self.label_buffer.set_text(tipo=self.texto["tipo"], tamanio=self.texto["tamanio"], color=self.texto["color"], texto=self.buffertext)
- self.Reconstruye_JAMEntryText(["buffer"])
-
- def set_entry(self, tipo_letra=None, tamanio_letra=None, color_texto=None, color_fondo=None):
- ''' Setea colores, tamaño y tipo de letra. '''
- cambios= False
- if tipo_letra and tipo_letra != self.texto["tipo"]:
- self.texto["tipo"]= tipo_letra
- cambios= True
- if tamanio_letra and tamanio_letra != self.texto["tamanio"]:
- self.texto["tamanio"]= tamanio_letra
- cambios= True
- if color_texto and color_texto != self.texto["color"]:
- self.texto["color"]= color_texto
- cambios= True
- if color_fondo and color_fondo != self.texto["fondo"]:
- self.texto["fondo"]= color_fondo
- cambios= True
- if cambios:
- if self.texto["tipo"] and self.texto["tamanio"] and self.texto["color"] and self.texto["fondo"]:
- self.label_buffer.set_text(tipo=self.texto["tipo"], tamanio=self.texto["tamanio"], color=self.texto["color"], texto=self.buffertext)
- self.Reconstruye_JAMEntryText(["colores"])
-
- def set_posicion(self, punto=(0,0)):
- ''' Setea la posición de JAMEntryText. '''
- self.posicion= punto
- self.frame.rect.x, self.frame.rect.y= self.posicion
- x, y= (self.frame.rect.x + self.separador, self.frame.rect.y + self.separador)
- self.label_buffer.set_posicion(punto=(x, y))
- x+= self.label_buffer.rect.w
- self.label_promp.set_posicion(punto=(x, y))
-
- def set_center(self, punto= None):
- ''' Centra JAMEntryText en el punto indicado. '''
- w,h= (0,0)
- if not punto or type(punto) != tuple or type(punto[0]) != int or type(punto[1]) != int:
- w,h= (pygame.display.Info().current_w, pygame.display.Info().current_h)
- posicion= (w/2-self.frame.rect.w/2, h/2-self.frame.rect.h/2)
- self.set_posicion(punto=posicion)
- elif type(punto) == tuple and type(punto[0]) == int and type(punto[1]) == int:
- posicion= (punto[0]-self.frame.rect.w/2, punto[1]-self.frame.rect.h/2)
- self.set_posicion(punto=posicion)
-
- # ------------ CONSTRUCCIÓN -----------------------
- def Reconstruye_JAMEntryText(self, cambios):
- if "todo" in cambios:
- self.label_buffer= JAMLabel(self.buffertext)
- self.label_promp = Promp(self)
- self.frame.image= self.get_base()
- self.frame.rect= self.frame.image.get_rect()
- self.add(self.frame)
- self.add(self.label_buffer)
- self.add(self.label_promp)
- self.set_posicion(punto=self.posicion)
-
- if "colores" in cambios:
- self.label_promp.Reconstruye_Promp(["todo"])
- self.frame.image= self.get_base()
- self.frame.rect= self.frame.image.get_rect()
- self.set_posicion(punto=self.posicion)
-
- if "buffer" in cambios:
- self.frame.image= self.get_base()
- self.frame.rect= self.frame.image.get_rect()
- self.set_posicion(punto=self.posicion)
-
- def get_base(self):
- ''' Construye el sprite base. '''
- (a,b,c,d)= self.label_buffer.rect
- (aa,bb,cc,dd)= self.label_promp.rect
-
- ancho= c + cc + self.separador*2
- alto= 0
- if d > dd:
- alto= d
- else:
- alto= dd
- alto+= self.separador*2
-
- frame1= VG.get_Rectangulo(self.texto["fondo"], (ancho,alto))
- return frame1
-
- def Describe(self):
- ''' Describe la Estructura de Este Control. '''
- estructura = '''
- Estructura JAMEntryText:
-
- JAMObject:
- frame
- etiqueta_buffer
- promp
- buffertext
- handle_key
-
- Detalle Estructural:
- frame: es una imagen construida en tiempo de ejecución sobre la cual se pegan las imágenes de las etiquetas
- etiqueta_buffer: JAMLabel con el texto que el usuario va escribiendo
- promp: Imagen que representa al promp con su efecto intermitente
- buffertext: El texto que el usuario va ingresando
- handle_key: Detector de eventos de teclado '''
-
- print estructura, "\n"
- print "Ejemplo, Configuración actual:\n"
- print "\t", self.JAMObjects.keys(), "\n"
- for k in self.JAMObjects.items():
- print k, "\n"
+ def __init__(self):
+ pygame.sprite.OrderedUpdates.__init__(self)
+ self.buffertext= ""
+
+ # teclas
+ self.handlekey= None
+
+ #self.sensitive= False
+
+ self.texto= {"fondo":VG.get_blanco(), "tipo":pygame.font.get_default_font(), "tamanio": 20, "color":VG.get_negro()}
+
+ self.separador= 5
+ self.posicion= (0,0)
+
+ self.label_buffer= None
+ self.label_promp = None
+ self.frame= pygame.sprite.Sprite()
+
+ self.JAMObjects= {"base":self.frame, "etiqueta_buffer":self.label_buffer, "promp":self.label_promp,
+ "buffertext": self.buffertext, "handle_key":self.handlekey}
+
+ self.Reconstruye_JAMEntryText(["todo"])
+
+ # ------------- GETS ------------------------
+ def get_tamanio(self):
+ return (self.frame.rect.w, self.frame.rect.h)
+
+ # ------------ SETEOS -----------------------
+ #def set_mouse_sensitive(self, valor):
+ # self.sensitive= bool(valor)
+
+ def set_handle_key(self, valor):
+ ''' Habilita y desabilita la detección de eventos de tecla.
+ Por defecto no lo hace ya que JAMEntryText está pensado como objeto parte de JAMBoardEntryText. '''
+ if bool(valor) == True:
+ self.handlekey= JAMHandleKeyEvent(self)
+ else:
+ self.handlekey= None
+
+ def set_callback_enter(self, callback=None):
+ ''' Setea una función para ejecutarse cuando el usuario presione enter.
+ La función debe recibir un string para el buffer de texto de JAMEntryText'''
+ if self.handlekey:
+ self.handlekey.callback_enter= callback
+
+ def set_buffer(self, texto):
+ ''' Setea el buffer de texto de JAMEntryText. '''
+ if texto != self.buffertext:
+ self.buffertext = texto
+ self.label_buffer.set_text(tipo=self.texto["tipo"], tamanio=self.texto["tamanio"], color=self.texto["color"], texto=self.buffertext)
+ self.Reconstruye_JAMEntryText(["buffer"])
+
+ def set_entry(self, tipo_letra=None, tamanio_letra=None, color_texto=None, color_fondo=None):
+ ''' Setea colores, tamaño y tipo de letra. '''
+ cambios= False
+ if tipo_letra and tipo_letra != self.texto["tipo"]:
+ self.texto["tipo"]= tipo_letra
+ cambios= True
+ if tamanio_letra and tamanio_letra != self.texto["tamanio"]:
+ self.texto["tamanio"]= tamanio_letra
+ cambios= True
+ if color_texto and color_texto != self.texto["color"]:
+ self.texto["color"]= color_texto
+ cambios= True
+ if color_fondo and color_fondo != self.texto["fondo"]:
+ self.texto["fondo"]= color_fondo
+ cambios= True
+ if cambios:
+ if self.texto["tipo"] and self.texto["tamanio"] and self.texto["color"] and self.texto["fondo"]:
+ self.label_buffer.set_text(tipo=self.texto["tipo"], tamanio=self.texto["tamanio"], color=self.texto["color"], texto=self.buffertext)
+ self.Reconstruye_JAMEntryText(["colores"])
+
+ def set_posicion(self, punto=(0,0)):
+ ''' Setea la posición de JAMEntryText. '''
+ self.posicion= punto
+ self.frame.rect.x, self.frame.rect.y= self.posicion
+ x, y= (self.frame.rect.x + self.separador, self.frame.rect.y + self.separador)
+ self.label_buffer.set_posicion(punto=(x, y))
+ x+= self.label_buffer.rect.w
+ self.label_promp.set_posicion(punto=(x, y))
+
+ def set_center(self, punto= None):
+ ''' Centra JAMEntryText en el punto indicado. '''
+ w,h= (0,0)
+ if not punto or type(punto) != tuple or type(punto[0]) != int or type(punto[1]) != int:
+ w,h= (pygame.display.Info().current_w, pygame.display.Info().current_h)
+ posicion= (w/2-self.frame.rect.w/2, h/2-self.frame.rect.h/2)
+ self.set_posicion(punto=posicion)
+ elif type(punto) == tuple and type(punto[0]) == int and type(punto[1]) == int:
+ posicion= (punto[0]-self.frame.rect.w/2, punto[1]-self.frame.rect.h/2)
+ self.set_posicion(punto=posicion)
+
+ # ------------ CONSTRUCCIÓN -----------------------
+ def Reconstruye_JAMEntryText(self, cambios):
+ if "todo" in cambios:
+ self.label_buffer= JAMLabel(self.buffertext)
+ self.label_promp = Promp(self)
+ self.frame.image= self.get_base()
+ self.frame.rect= self.frame.image.get_rect()
+ self.add(self.frame)
+ self.add(self.label_buffer)
+ self.add(self.label_promp)
+ self.set_posicion(punto=self.posicion)
+
+ if "colores" in cambios:
+ self.label_promp.Reconstruye_Promp(["todo"])
+ self.frame.image= self.get_base()
+ self.frame.rect= self.frame.image.get_rect()
+ self.set_posicion(punto=self.posicion)
+
+ if "buffer" in cambios:
+ self.frame.image= self.get_base()
+ self.frame.rect= self.frame.image.get_rect()
+ self.set_posicion(punto=self.posicion)
+
+ def get_base(self):
+ ''' Construye el sprite base. '''
+ (a,b,c,d)= self.label_buffer.rect
+ (aa,bb,cc,dd)= self.label_promp.rect
+
+ ancho= c + cc + self.separador*2
+ alto= 0
+ if d > dd:
+ alto= d
+ else:
+ alto= dd
+ alto+= self.separador*2
+
+ frame1= VG.get_Rectangulo(self.texto["fondo"], (ancho,alto))
+ return frame1
+
+ def Describe(self):
+ ''' Describe la Estructura de Este Control. '''
+ estructura = '''
+ Estructura JAMEntryText:
+
+ JAMObject:
+ frame
+ etiqueta_buffer
+ promp
+ buffertext
+ handle_key
+
+ Detalle Estructural:
+ frame: es una imagen construida en tiempo de ejecución sobre la cual se pegan las imágenes de las etiquetas
+ etiqueta_buffer: JAMLabel con el texto que el usuario va escribiendo
+ promp: Imagen que representa al promp con su efecto intermitente
+ buffertext: El texto que el usuario va ingresando
+ handle_key: Detector de eventos de teclado '''
+
+ print estructura, "\n"
+ print "Ejemplo, Configuración actual:\n"
+ print "\t", self.JAMObjects.keys(), "\n"
+ for k in self.JAMObjects.items():
+ print k, "\n"
class Promp(pygame.sprite.Sprite):
- def __init__(self, entry):
- pygame.sprite.Sprite.__init__(self)
- ''' Es el promp. '''
- self.entry= entry
- self.velocidad= 15
- self.contador= 0
- self.image= None
- self.rect= None
- self.imagen1= None
- self.imagen2= None
-
- self.Reconstruye_Promp(["todo"])
-
- def Reconstruye_Promp(self, cambios):
- ''' Reconstruye las imágenes para efecto Titilar. '''
- if "todo" in cambios:
- self.set_imagenes_promp()
- self.image= self.imagen1
- self.rect= self.image.get_rect()
-
- def set_posicion(self, punto=(0,0)):
- ''' Reposiciona el sprite. '''
- self.rect.x= punto[0]
- self.rect.y= punto[1]
-
- def set_imagenes_promp(self):
- ''' Construye las imagenes del promp. '''
- self.imagen1= self.get_promp(self.entry.texto["color"])
- self.imagen2= self.get_promp(self.entry.texto["fondo"])
-
- def get_promp(self, color):
- ''' Devuelve una Superficie con la Imagen del Texto. '''
- fuente = pygame.font.Font(pygame.font.match_font(self.entry.texto["tipo"], True, False), self.entry.texto["tamanio"])
- string_to_render = unicode( str("|".decode("utf-8")) )
- imagen_fuente = fuente.render(string_to_render, 1, (color))
- return imagen_fuente
-
- def update(self):
- ''' Efecto Titilar. '''
- if self.entry.handlekey:
- if self.contador == self.velocidad:
- if self.image == self.imagen1:
- self.image= self.imagen2
- else:
- self.image= self.imagen1
- self.contador= 0
- else:
- self.contador += 1
- else:
- if self.image == self.imagen1:
- self.image = self.imagen2
-
- # teclas
- if self.entry.handlekey: self.entry.handlekey.handle()
+ def __init__(self, entry):
+ pygame.sprite.Sprite.__init__(self)
+ ''' Es el promp. '''
+ self.entry= entry
+ self.velocidad= 15
+ self.contador= 0
+ self.image= None
+ self.rect= None
+ self.imagen1= None
+ self.imagen2= None
+
+ self.Reconstruye_Promp(["todo"])
+
+ def Reconstruye_Promp(self, cambios):
+ ''' Reconstruye las imágenes para efecto Titilar. '''
+ if "todo" in cambios:
+ self.set_imagenes_promp()
+ self.image= self.imagen1
+ self.rect= self.image.get_rect()
+
+ def set_posicion(self, punto=(0,0)):
+ ''' Reposiciona el sprite. '''
+ self.rect.x= punto[0]
+ self.rect.y= punto[1]
+
+ def set_imagenes_promp(self):
+ ''' Construye las imagenes del promp. '''
+ self.imagen1= self.get_promp(self.entry.texto["color"])
+ self.imagen2= self.get_promp(self.entry.texto["fondo"])
+
+ def get_promp(self, color):
+ ''' Devuelve una Superficie con la Imagen del Texto. '''
+ fuente = pygame.font.Font(pygame.font.match_font(self.entry.texto["tipo"], True, False), self.entry.texto["tamanio"])
+ string_to_render = unicode( str("|".decode("utf-8")) )
+ imagen_fuente = fuente.render(string_to_render, 1, (color))
+ return imagen_fuente
+
+ def update(self):
+ ''' Efecto Titilar. '''
+ if self.entry.handlekey:
+ if self.contador == self.velocidad:
+ if self.image == self.imagen1:
+ self.image= self.imagen2
+ else:
+ self.image= self.imagen1
+ self.contador= 0
+ else:
+ self.contador += 1
+ else:
+ if self.image == self.imagen1:
+ self.image = self.imagen2
+
+ # teclas
+ if self.entry.handlekey: self.entry.handlekey.handle()
class JAMHandleKeyEvent():
- def __init__(self, objeto_destino):
- ''' Detecta eventos de teclado.'''
- self.letras= VG.get_letras_down()
- self.numeros= VG.get_numeros()
-
- self.objeto_destino= objeto_destino
- self.text_buffer= []
- self.callback_enter= None
-
- def handle(self):
- ''' Trata los eventos del teclado. '''
- eventos= pygame.event.get()
- for event in eventos:
- if event.type == pygame.KEYDOWN:
- letra= pygame.key.name(event.key)
- self.gestiona_event(letra)
-
- for event in eventos:
- # Republica los Eventos. Porque se supone que hay un handle general para los eventos del programa mayor.
- pygame.event.post(event)
-
- def gestiona_event(self, texto):
- ''' Cuando el usuario presiona una espacio, borrar, enter o tilde. '''
- if texto in self.letras:
- self.text_buffer.append( texto )
- return self.set_bufferentry()
-
- elif texto in self.numeros:
- self.text_buffer.append( texto )
- return self.set_bufferentry()
-
- elif texto== "space":
- # agrega un espacio en el buffer
- self.text_buffer.append( " " )
- return self.set_bufferentry()
-
- elif texto== "backspace":
- # Borra el último caracter ingresado
- if len(self.text_buffer) <= 1:
- self.text_buffer= [ " " ]
- else:
- self.text_buffer= self.text_buffer[0:-1]
- return self.set_bufferentry()
-
- elif texto== "return":
- # Llama a la función conectada al click del botón enter, pasandole como parámetro el texto en el buffer
- if self.callback_enter:
- buf= ""
- try:
- primercaracter= self.text_buffer[0]
- if primercaracter != " ":
- buf= primercaracter
- else:
- buf= ""
-
- for x in self.text_buffer[1:]:
- buf += x
- except:
- return
- if buf:
- return self.callback_enter(buf)
-
- def set_bufferentry(self):
- ''' Convierte el buffer en cadena de texto y lo devuelve a la función set_buffer del objeto destino. '''
- buf= ""
- for x in self.text_buffer:
- buf += x
- self.objeto_destino.set_buffer(buf)
+ def __init__(self, objeto_destino):
+ ''' Detecta eventos de teclado.'''
+ self.letras= VG.get_letras_down()
+ self.numeros= VG.get_numeros()
+
+ self.objeto_destino= objeto_destino
+ self.text_buffer= []
+ self.callback_enter= None
+
+ def handle(self):
+ ''' Trata los eventos del teclado. '''
+ eventos= pygame.event.get()
+ for event in eventos:
+ if event.type == pygame.KEYDOWN:
+ letra= pygame.key.name(event.key)
+ self.gestiona_event(letra)
+
+ for event in eventos:
+ # Republica los Eventos. Porque se supone que hay un handle general para los eventos del programa mayor.
+ pygame.event.post(event)
+
+ def gestiona_event(self, texto):
+ ''' Cuando el usuario presiona una espacio, borrar, enter o tilde. '''
+ if texto in self.letras:
+ self.text_buffer.append( texto )
+ return self.set_bufferentry()
+
+ elif texto in self.numeros:
+ self.text_buffer.append( texto )
+ return self.set_bufferentry()
+
+ elif texto== "space":
+ # agrega un espacio en el buffer
+ self.text_buffer.append( " " )
+ return self.set_bufferentry()
+
+ elif texto== "backspace":
+ # Borra el último caracter ingresado
+ if len(self.text_buffer) <= 1:
+ self.text_buffer= [ " " ]
+ else:
+ self.text_buffer= self.text_buffer[0:-1]
+ return self.set_bufferentry()
+
+ elif texto== "return":
+ # Llama a la función conectada al click del botón enter, pasandole como parámetro el texto en el buffer
+ if self.callback_enter:
+ buf= ""
+ try:
+ primercaracter= self.text_buffer[0]
+ if primercaracter != " ":
+ buf= primercaracter
+ else:
+ buf= ""
+
+ for x in self.text_buffer[1:]:
+ buf += x
+ except:
+ return
+ if buf:
+ return self.callback_enter(buf)
+
+ def set_bufferentry(self):
+ ''' Convierte el buffer en cadena de texto y lo devuelve a la función set_buffer del objeto destino. '''
+ buf= ""
+ for x in self.text_buffer:
+ buf += x
+ self.objeto_destino.set_buffer(buf)
'''
# Ejemplos para tratar los códigos de teclas posteriormente
- def handle_key_enter(self):
- for event in pygame.event.get():
- if event.type == pygame.KEYDOWN:
- letra= pygame.key.name(event.key)
- print letra
+ def handle_key_enter(self):
+ for event in pygame.event.get():
+ if event.type == pygame.KEYDOWN:
+ letra= pygame.key.name(event.key)
+ print letra
teclas = pygame.key.get_pressed()
- print teclas.index(1)
+ print teclas.index(1)
All the keyboard event.key constants:
@@ -401,112 +398,112 @@ Other:
# ----- FIN DE CLASE JAMEntryText - INICIO DE DEBUG Y EJEMPLO DE LA CLASE -----
class Ejemplo(object):
- def __init__(self):
- self.ventana = None
- self.reloj = None
- self.nivel = "menu_0"
-
- self.fondo = None
- self.widgets = None
-
- self.resolucion = (400,250)
-
- self.setup()
- self.Run()
-
- def setup(self):
- pygame.init()
- pygame.display.set_mode(self.resolucion , 0, 0)
- pygame.display.set_caption("Ejemplo")
-
- self.fondo = self.get_Fondo()
-
- self.widgets = JAMEntryText()
- self.widgets.set_handle_key(True)
- #self.widgets.set_mouse_sensitive(True)
- self.widgets.set_callback_enter(self.print_buffer)
-
- self.ventana = pygame.display.get_surface()
- self.reloj = pygame.time.Clock()
-
- pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN,
- USEREVENT, QUIT, ACTIVEEVENT])
- pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, KEYUP, VIDEORESIZE, VIDEOEXPOSE])
- pygame.mouse.set_visible(True)
-
- def Run(self):
- self.ventana.blit(self.fondo, (0,0))
- self.widgets.draw(self.ventana)
- pygame.display.update()
- contador = 0
- while self.nivel == "menu_0":
- self.reloj.tick(35)
-
- cambios=[]
- self.widgets.clear(self.ventana, self.fondo)
- if contador == 15:
- # Activa la siguiente línea para provocar cambios de texto en JAMEntryText
- #contador= self.ejemplo_cambia_texto_en_buffer()
- # Activa la siguiente línea para provocar cambios de color en JAMEntryText
- #contador= self.ejemplo_cambia_colors()
- # Activa la siguiente línea para provocar cambios de Posición en JAMEntryText
- #contador= self.ejemplo_cambia_posicion()
- pass
-
- self.widgets.update()
- self.handle_event()
- pygame.event.clear()
- cambios.extend ( self.widgets.draw(self.ventana) )
- pygame.display.update(cambios)
- contador += 1
-
- def ejemplo_cambia_posicion(self):
- import random
- valores= [100,205,130,140,150,180]
- x, y= (random.choice(valores), random.choice(valores))
- self.widgets.set_center(punto= (x,y))
- return 0
-
- def ejemplo_cambia_texto_en_buffer(self):
- texto= "El usuario ingresa texto y el mismo aparece aqui . . ."
- x= len(self.widgets.buffertext)
- if len(texto) > x:
- self.widgets.set_buffer(str(texto[0:x+1]))
- else:
- self.widgets.set_buffer("")
- return 0
-
- def ejemplo_cambia_colors(self):
- import random
- colores= [(128,128,128,255), (255,100,100,255), (255,255,100,255), (255,0,0,255)]
- color=random.choice(colores)
- self.widgets.set_entry(tipo_letra=None, tamanio_letra=None, color_texto=color, color_fondo=None)
- return 0
-
- def get_Fondo(self):
- superficie = pygame.Surface( self.resolucion, flags=HWSURFACE )
- superficie.fill((128,128,128,255))
- return superficie
-
- def handle_event(self):
- for event in pygame.event.get():
- if event.type == pygame.KEYDOWN:
- teclas = pygame.key.get_pressed()
- if teclas[pygame.K_ESCAPE]:
- self.salir()
- pygame.event.clear()
-
- def print_buffer(self, buffertext):
- print self.widgets.buffertext
- print buffertext
-
- def salir(self):
- print "\n"
- self.widgets.Describe()
- pygame.quit()
- sys.exit()
+ def __init__(self):
+ self.ventana = None
+ self.reloj = None
+ self.nivel = "menu_0"
+
+ self.fondo = None
+ self.widgets = None
+
+ self.resolucion = (400,250)
+
+ self.setup()
+ self.Run()
+
+ def setup(self):
+ pygame.init()
+ pygame.display.set_mode(self.resolucion , 0, 0)
+ pygame.display.set_caption("Ejemplo")
+
+ self.fondo = self.get_Fondo()
+
+ self.widgets = JAMEntryText()
+ self.widgets.set_handle_key(True)
+ #self.widgets.set_mouse_sensitive(True)
+ self.widgets.set_callback_enter(self.print_buffer)
+
+ self.ventana = pygame.display.get_surface()
+ self.reloj = pygame.time.Clock()
+
+ pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN,
+ USEREVENT, QUIT, ACTIVEEVENT])
+ pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, KEYUP, VIDEORESIZE, VIDEOEXPOSE])
+ pygame.mouse.set_visible(True)
+
+ def Run(self):
+ self.ventana.blit(self.fondo, (0,0))
+ self.widgets.draw(self.ventana)
+ pygame.display.update()
+ contador = 0
+ while self.nivel == "menu_0":
+ self.reloj.tick(35)
+
+ cambios=[]
+ self.widgets.clear(self.ventana, self.fondo)
+ if contador == 15:
+ # Activa la siguiente línea para provocar cambios de texto en JAMEntryText
+ #contador= self.ejemplo_cambia_texto_en_buffer()
+ # Activa la siguiente línea para provocar cambios de color en JAMEntryText
+ #contador= self.ejemplo_cambia_colors()
+ # Activa la siguiente línea para provocar cambios de Posición en JAMEntryText
+ #contador= self.ejemplo_cambia_posicion()
+ pass
+
+ self.widgets.update()
+ self.handle_event()
+ pygame.event.clear()
+ cambios.extend ( self.widgets.draw(self.ventana) )
+ pygame.display.update(cambios)
+ contador += 1
+
+ def ejemplo_cambia_posicion(self):
+ import random
+ valores= [100,205,130,140,150,180]
+ x, y= (random.choice(valores), random.choice(valores))
+ self.widgets.set_center(punto= (x,y))
+ return 0
+
+ def ejemplo_cambia_texto_en_buffer(self):
+ texto= "El usuario ingresa texto y el mismo aparece aqui . . ."
+ x= len(self.widgets.buffertext)
+ if len(texto) > x:
+ self.widgets.set_buffer(str(texto[0:x+1]))
+ else:
+ self.widgets.set_buffer("")
+ return 0
+
+ def ejemplo_cambia_colors(self):
+ import random
+ colores= [(128,128,128,255), (255,100,100,255), (255,255,100,255), (255,0,0,255)]
+ color=random.choice(colores)
+ self.widgets.set_entry(tipo_letra=None, tamanio_letra=None, color_texto=color, color_fondo=None)
+ return 0
+
+ def get_Fondo(self):
+ superficie = pygame.Surface( self.resolucion, flags=HWSURFACE )
+ superficie.fill((128,128,128,255))
+ return superficie
+
+ def handle_event(self):
+ for event in pygame.event.get():
+ if event.type == pygame.KEYDOWN:
+ teclas = pygame.key.get_pressed()
+ if teclas[pygame.K_ESCAPE]:
+ self.salir()
+ pygame.event.clear()
+
+ def print_buffer(self, buffertext):
+ print self.widgets.buffertext
+ print buffertext
+
+ def salir(self):
+ print "\n"
+ self.widgets.Describe()
+ pygame.quit()
+ sys.exit()
if __name__ == "__main__":
- Ejemplo()
+ Ejemplo()