<br><br><div class="gmail_quote">El 3 de agosto de 2010 16:10, Horacio Castellini <span dir="ltr"><<a href="mailto:horacio9573@yahoo.com.ar">horacio9573@yahoo.com.ar</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
> 8<--------8<--------8<--------8<--------8<--------8<--------8<--------<br>
<br>
Retomando el tema de la GUI y viendo que esto que me pasaste es lo que busco, te voy haciendo preguntas ya que los tutorial sobre el tema son chotos... así que para empezar viene algunas preguntas..<br></blockquote><div>
<br></div><div>Hola, les dejo un link con un muy buen tutorial sobre Python incluido Tkinter ( esta en ingles ).</div><div><a href="http://www.java2s.com/Tutorial/Python/CatalogPython.htm">http://www.java2s.com/Tutorial/Python/CatalogPython.htm</a></div>
<div><br></div><div>Saludos.</div><div>Néstor</div><div><br></div><div><a href="http://www.java2s.com/Tutorial/Python/CatalogPython.htm"></a> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
> from Tkinter import *<br>
> import tkFileDialog<br>
> # los demas imports<br>
><br>
> def definir_archivo():<br>
> """Selecciona el archivo a procesar"""<br>
> global fe<br>
> fname = tkFileDialog.askopenfilename()<br>
> if fname:<br>
> fe.delete(0, END)<br>
> fe.insert(0, fname)<br>
<br>
Que cuernos estás haciendo acá? "fe" es una lista, en la cual le pasas el descriptor (eso es en C :)) ) a un archivo... porque no lo hiciste así<br>
<br>
if fname:<br>
fe=[]<br>
fe.append(fname)<br>
<br>
<br>
><br>
> def procesar():<br>
> """Procesa el archivo e inserta los<br>
> resultados en los campos"""<br>
> global fe<br>
> global res<br>
> fname=fe.get()<br>
<br>
porque no fname=fe[0]?<br>
<br>
> if not fname:<br>
> return<br>
> # Aca va el calculo<br>
> # yo pondria asi :<br>
> # (cum, suav, var, U) =<br>
> procesarImagen(fname)<br>
> # y procesarImagen deberia retornar una tupla<br>
> con los valores.<br>
> # Notar que si procesarImagen da un error, en<br>
> el mundo de las<br>
> # GUI es considerado buena practica hacer un<br>
> cuadro de dialogo<br>
> # explicando que fallo y permitir reintentar.<br>
> Una forma seria<br>
> # retornar (None,)*4 y comprobar esa<br>
> condicion.<br>
> # por ahora simulemos los resultados<br>
> import random<br>
> cum = random.random()<br>
> suav = random.random()<br>
> var = random.random()<br>
> U = random.random()<br>
> # .... fin calculos<br>
> for e, val in zip(res,[cum, suav, var, U]):<br>
> e.configure(state="normal")<br>
> e.delete(0,END)<br>
> e.insert(END, val)<br>
> e.configure(state="readonly")<br>
><br>
<br>
Acá directamente me estoy dando la cabeza contra la pared de como cuerno pasan estos parámetros al frame...<br>
<br>
> def hacerGUI():<br>
> global res<br>
> global fe<br>
><br>
> root=Tk()<br>
> # frame superior con una etiqueta, una<br>
> entrada de texto y un<br>
> # boton para cargar el archivo<br>
> ff=Frame(root)<br>
> fl=Label(ff,text="Archivo a analizar:")<br>
> fe=Entry(ff)<br>
> fb=Button(ff,text="...",<br>
> command=definir_archivo)<br>
> # geometry management<br>
> fb.grid(row=0, column=2, padx=3)<br>
> fe.grid(row=0, column=1, padx=3, sticky=EW)<br>
> fl.grid(row=0, column=0, padx=3)<br>
> ff.grid_columnconfigure(1, weight=1)<br>
><br>
> # Frame de resultados<br>
> rf=Frame(root)<br>
> res=[]<br>
> for i,txt in<br>
> enumerate(['Entro:','Suavidad:','Var:','U:']):<br>
> l = Label(rf,text=txt)<br>
> e = Entry(rf, state="readonly",<br>
> readonlybackground="white",<br>
> <br>
> selectbackground="#4a6984")<br>
> res.append(e)<br>
> l.grid(column=0, row=i,<br>
> sticky=E, pady=3, padx=12)<br>
> e.grid(column=1, row=i,<br>
> sticky=NSEW, pady=3)<br>
> rf.grid_columnconfigure(1,weight=1)<br>
> # frame de control/salida<br>
> cf=Frame(root)<br>
> cg=Button(cf, text="Procesar", width=12,<br>
> command=procesar)<br>
> ce=Button(cf, text="Salir", width=12,<br>
> command=exit)<br>
> # geometry management<br>
> cg.grid(column=0, row=0, padx=12, sticky=E)<br>
> ce.grid(column=1, row=0, padx=12, sticky=W)<br>
> cf.grid_columnconfigure(0, weight=1)<br>
> cf.grid_columnconfigure(1, weight=1)<br>
><br>
> # finalmente le damos al geometry manager los<br>
> tres frames<br>
> ff.pack(fill=X, padx=3, pady=3)<br>
> cf.pack(expand=1, fill=BOTH, side=BOTTOM,<br>
> pady=3, padx=3)<br>
> rf.pack(fill=BOTH, expand=1, padx=6, pady=6)<br>
> # opciones de la ventana:<br>
> # solo permitimos cambiar el tamanio<br>
> horizontalmente<br>
> root.wm_resizable(1,0)<br>
> # titulo de la ventana<br>
> root.wm_title("SuperProgramejo 1.0")<br>
><br>
> hacerGUI()<br>
> mainloop()<br>
> 8<--------8<--------8<--------8<--------8<--------8<--------8<--------<br>
><br>
> Saludos<br>
> Emiliano<br>
> _______________________________________________<br>
> Programacion mailing list<br>
> <a href="mailto:Programacion@lugro.org.ar">Programacion@lugro.org.ar</a><br>
> <a href="http://lugro.org.ar/mailman/listinfo/programacion" target="_blank">http://lugro.org.ar/mailman/listinfo/programacion</a><br>
><br>
<br>
<br>
<br>
_______________________________________________<br>
Programacion mailing list<br>
<a href="mailto:Programacion@lugro.org.ar">Programacion@lugro.org.ar</a><br>
<a href="http://lugro.org.ar/mailman/listinfo/programacion" target="_blank">http://lugro.org.ar/mailman/listinfo/programacion</a><br>
</blockquote></div><br>