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