[Python-es] Editar variables en aplicaciones de consola

Chema Cortes pych3m4 en gmail.com
Lun Ago 18 00:16:49 CEST 2014


El 17 de agosto de 2014, 19:45, kausdiv <kausdiv en 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 en 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140818/137693e6/attachment.html>


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