dudas programación python y tkinter

Ernesto Revilla erny en sicem.biz
Mie Jun 15 21:02:49 CEST 2005


El anterior mensaje se me escapó: disculpas!

Martha,

sé piedadosa con nosotros.... si nos haces preguntas por separadas, creo
que haya más personas con ganas de responder.

1. entry con fecha
La validación en principio la puedes hacer cuando confirmes la pantalla
o cuando realizas un focus out.


Código para validar/convertir cadenas a fecha

class FechaIncorrecta(Exception): pass

from time import strptime
def validarFecha(cadena):
    try:
        fecha=strptime(cadena,"%d/%m/%y")
        return fecha
    except ValueError:
        raise FechaIncorrecta, "Fecha o formato de fecha incorrecto: %s.
Formato requerido: dd-mm-aa" % fecha

o algo parecido.

2. Lo mismo que 1, pero con:
        hora=strptime(cadena,"%H:%M")

3. normalmente se define una variable de tkinter y se asigna al entry:
i=IntVar(root)  # siendo root un toplevel o Tk
e=Entry(textvariable=i)
...
para leer i, usas el método get:

class InvalidData(Exception): pass
try:
    valor=i.get()
    if valor>50:
       raise InvalidData,"Valor muy grande, mayor 50"
except ValueError:
       raise InvalidData,"No es un número"


4.

cuadro3.set(calcularFuncion(cuadro1.get(),cuadro2.get())

5. para la entrada,puedes crear una matriz de entries

r=Tk()
matrizControles=[]

n=5
for x in range(n):
     filaControles=[]
     for y in range(n):
         e=Entry(r, width=10)
         e.grid(row=x, column=y)
         filaControles.append(e)
     matrizControles.append(filaControles)


para leer la matriz puedes hacer:

def leerMatriz(matrizControles):
     matrizValores=[]
     for filaControles in matrizControles:
         filaValores=[]
         for control in filaControles:
             filaValores.append(control.get())
         matrizValores.append(filaValores)
     return matrizValores

Por supuesto, si quieres, puedes asociar una variables a cada uno de los 
controles

Por cierto, Python Mega Widgets tiene controles con validaciones 
(numéricos y con mín y max)

http://pmw.sourceforge.net/

Respecto a la gráfica, no tengo ni idea.

Espero que te sirva.

Erny

Martha Lucía Gallego López escribió:

>Saludos a todos los miembros de la lista:
>
>Hace algunos meses hice algunas preguntas acerca de python, de las cuales 
>logre obtener respuesta, y que me han servido como base para continuar con
>mi proyecto. 
>
>Hoy vuelvo a ustedes debido a que han surgido inquietudes,con respecto a la 
>programacion en Python y Tkinter: El python con el cual trabajo es
>versión 2.4 en el
>sistema operativo windows xp y agradecería mucho el que puedan
>ayudarme a resolver
>los problemas que siguen:
>
>1. Si voy a utilizar un formato fecha en un entry como debo hacerlo y
>como validarlo?.
>
>2. Teniendo en cuenta la duda anterior, hago la misma pregunta, para
>un formato hora.
>
>3. Para almacenar un dato que existe en un entry, se hace guardandose
>en una variable,
>   pero quisiera saber por favor, cómo utilizó esa variable?. Por ejemplo:
>   Tengo un dato entry con un determinado valor entero, digamos que es
>50 y los datos
>   que se colocan en ese entry no pueden ser mayores a 50. Cómo hago
>para que muestre
>   en pantalla un mensaje que diga que el valor ha sobrepasado los limites?....
>   Porque en verdad, como lo estoy trabajando es así:
>
>   cuadro=IntegerEntry(root)
>   if cuadro>50:
>	ruta=Toplevel(root)
>	Message(ruta, text='VALOR SOBREPASA LIMITES').grid()
>        ruta.transient(root)		   
>    
>   quisiera saber si tengo la idea o más bien como debería efectuarse?
>
>4. Se tienen dos entry de tipo flotante:
>   cuadro1=FloatEntry(root)
>   cuadro2=FloatEntry(root)
>   Estando estos entry almacenados en variables, quiero mostrar el resultado 
>   de una operación matemática entre el cuadro1 y el cuadro2; en un
>tercer entry;
>   quisiera saber como realizarlo
>
>5. como se ejecutan matrices en python, en el caso de que necesite
>llenar datos de manera
>   incremental como hago para limpiar pantalla y continuar poniendo
>datos; por ejemplo se
>   tiene un valor de x que va de x1 hasta xn así:
>   se le pide al usuario que entre valores de X y Y:
>   x1=		y1=
>   x2=		y2=
>   x3=		y3=
>   .		.
>   .		.
>   .		.
>   xn=		yn=
>   y como hacer para tomar estos datos y representar los valores de
>x,y en una gráfica
>
>Gracias por su atención y por su ayuda.
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>
>  
>




---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0524-2, 15/06/2005
Comprobado en: 15/06/2005 21:02:51
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com




Más información sobre la lista de distribución Python-es