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/

Responder a