Magistral, Chema.
Mucho mejor que lo que yo usaba.

Por cierto como haces tu para editar en aplicaciones de consola ?

saludos.

El 18/08/2014 0:16, Chema Cortes escribió:



El 17 de agosto de 2014, 19:45, kausdiv <kaus...@gmail.com> escribió:
Hola.

Estoy haciendo varias aplicaciones/utilidades de consola que necesito.
La cuestión es que no conozco ninguna forma de "editar" una variable, con raw_input se introduce nueva.. en fin he recurrido a Tkinter.

Pero me parece una tremenda chapuza lo que he hecho:
------------------codigo chapuza------------------
from Tkinter import *

global T
global sArgumentos

root = Tk()
T = Text(root, height=4, width=60)
T.pack()
sArgumentos = ""

def click():
    """Debe lanzarse en el click de Aceptar"""
    global T
    global sArgumentos
    sArgumentos  = T.get('1.0', 'end').strip()
    root.destroy()

def editar(argumentos):
    """Edita los argumentos y el resultado
       lo guarda en la varibale global sArgumentos """
    global T
    T.insert(END, argumentos)
    b = Button(root, text="Aceptar", command=click)
    b.pack(fill=BOTH, expand=1)
    b = Button(root, text="Cancelar", command=root.destroy)
    b.pack(fill=BOTH, expand=1)
    mainloop()
--------------------------------------------------------------------

En la aplicación se invoca a "editar('valor a editar')" y en la variable global sArgumentos se almacena la edición. Que además es la variable que contiene el origen.

Me gustaría saber  si alguien ha resuelto este problema de editar el contenido de variables mejor que esto.

Para empezar: los objetos "string" son "inmutables". No puedes "editarlos". Como mucho podrás crear nuevas cadenas a partir de otras.

Si lo que quieres es un interface en Tkinter, lo recomendable es usar las StringVars. Lee la documentación porque tienen tienen muchas características interesantes. Aquí sólo te pongo un código para que te oriente:

import Tkinter as tk

master = tk.Tk()

v = tk.StringVar()
v.set("A variable text")

e = tk.Entry(master, textvariable=v)
e.pack()

b = tk.Button(master, text="get", width=10, command=master.quit)
b.pack()

tk.mainloop()

edited_text = v.get()
print(edited_text)

 

Gracias.


_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



--
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es


_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a