El 18 de agosto de 2014, 1:08, kausdiv <kaus...@gmail.com> escribió:
> Magistral, Chema. > Mucho mejor que lo que yo usaba. > > Por cierto como haces tu para editar en aplicaciones de consola ? > No suelo necesitarlo, pero dejaría que las tareas de edición las hagan los editores (vim/emacs/nano...notepad...st2). Crea un fichero temporal, añade el texto, y ábrelo con el editor por defecto que tenga el sistema: import os import subprocess import tempfile def editar(texto): with tempfile.NamedTemporaryFile(mode="w+",suffix='.txt',delete=False) as fp: fp.write(texto) filename = fp.name if os.name=="nt": subprocess.call("notepad "+filename) elif os.name == "posix": editor = os.getenv('EDITOR') if not editor: editor = "editor" # normalmente un alias del editor 'nano' subprocess.call(editor + ' ' + filename) with open(filename) as fp: res = fp.read() os.remove(filename) return res texto = editar("Hello world!") print(texto) > > 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 > listPython-es@python.orghttps://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/ > > -- 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/