• Domingo 22 de Diciembre de 2024, 20:54

Autor Tema:  Almacenar datos ingresados para imprimirlos en un archivo de texto  (Leído 6603 veces)

GeoRider

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Almacenar datos ingresados para imprimirlos en un archivo de texto
« en: Martes 10 de Enero de 2012, 17:04 »
0
Hola a todos,

estoy empezando con Python, creando una interfaz gráfica con el módulo Tkinter, tengo todo bien, salvo el principal objetivo que es que los datos ingresados en los cuadros de texto, al clickar en el botón imprimir (que es el nombre del botón) se guarden en un archivo de tipo texto (*.txt).

El código usado es el siguiente:

#######################

from Tkinter import *
import tkMessageBox
from sys import *




def funcion():
    """Inserta el primer texto"""
    var_felicit.set(texto1)   

def funcion2():
    """Inserta el segundo texto"""
    var_felicit2.set(texto2)   

def borrar_ok():
    """Borra los campos anteriores"""
    tkMessageBox.showinfo("Mensaje de comprobacion", "Borrado completado satisfactoriamente")
    ent_felicit.delete(0, END)
    ent_felicit2.delete(0, END)

def almacenar():
    """Almacena los datos ingresados"""
    tkMessageBox.showinfo("Mensaje de comprobacion", "Exportacion completada")
    a = open('D:\\Python\\Enero\\archivo.txt', 'w')
    a.write(elemento)
    a.close
##############################

texto1=' '
texto2=' '
elemento = texto1 + texto2


###############################

# Ejecuta la ventana de la interfaz
frame = Frame()
button = Button(frame, text="Nombres", command=funcion)
button.grid(row=0, column=0) 

var_felicit = StringVar()   
ent_felicit = Entry(frame, textvariable=var_felicit)   
ent_felicit.grid(row=0, column=1);



button = Button(frame, text="Apellidos", command=funcion2) 
button.grid(row=0, column=2) 

var_felicit2 = StringVar() 
ent_felicit2 = Entry(frame, textvariable=var_felicit2) 
ent_felicit2.grid(row=0, column=3)


button = Button(frame, text="Borrar", command=borrar_ok) 
button.grid(row=2, column=1, columnspan=2) 


button = Button(frame, text="Imprimir", command=almacenar)
button.grid(row=2, column=2, columnspan=2)


frame.pack()   
frame.mainloop()   


Como verán la idea es ingresar manualmente los Nombres y Apellidos de alguien para hacer que el pequeño programa interactue con el usuario, y que al clickar en el botón imprimir, estos sean enviados al archivo texto (*.txt), ya que hasta los cuadros de los mensajes funcionan bien pero no funciona como esperaba....


Mi mail es rnavarro1987@hotmail.com, espero puedan ayudarme con eso.

Muchas gracias de antemano

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re:Almacenar datos ingresados para imprimirlos en un archivo de texto
« Respuesta #1 en: Miércoles 11 de Enero de 2012, 18:46 »
0
Cuando dices no funciona como esperaba a que se refiere?, detalla un poco más tu error o problema para saber exactamente como deben orientarte.
Veo que estás haciendo el llamado de la función que creaste.
Saludos,
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

GeoRider

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Almacenar datos ingresados para imprimirlos en un archivo de texto
« Respuesta #2 en: Miércoles 11 de Enero de 2012, 23:26 »
0

Hola a Todos nuevamente:

se soluciono el problema, que era: en el comando write de la funcion almacenar, se indicada incorrectamente que se escriba lo ingresado en cuadro de texto, resalto el error en negrita para que se sepa;





from Tkinter import *
import tkMessageBox
from sys import *


def borrar_ok():
    """Borra los campos anteriores"""
    tkMessageBox.showinfo("Mensaje de comprobacion", "Borrado completado satisfactoriamente")
    ent_felicit.delete(0, END)
    ent_felicit2.delete(0, END)

def almacenar():
    """Almacena los datos ingresados"""
    tkMessageBox.showinfo("Mensaje de comprobacion", "Exportacion completada")
    a = open('D:\\Python\\Enero\\archivo.txt', 'w')
    a.write(ent_felicit.get() + '\n' + ent_felicit2.get())
    ent_felicit.delete(0, END)
    ent_felicit2.delete(0, END)
    a.close
##############################




###############################

# Ejecuta la ventana de la interfaz
frame = Frame()
lab_nombres = Label(frame, text="Nombres") # Ejecuta el primer boton
lab_nombres.grid(row=0, column=0)  # Define la posicion del boton

ent_felicit = Entry(frame)    # Define el frame donde ira el texto, y lo que ira en el texto
ent_felicit.grid(row=0, column=1);

lab_appellidos = Label(frame, text="Apellidos")  # Ejecuta el segundo boton
lab_appellidos.grid(row=0, column=2)  # Define la posicion del boton

ent_felicit2 = Entry(frame)  # Define el frame donde ira el texto, y lo que ira en el texto
ent_felicit2.grid(row=0, column=3)


button = Button(frame, text="Borrar", command=borrar_ok)  # Ejecuta el segundo boton
button.grid(row=2, column=1, columnspan=2)  # Define la posicion del boton


button = Button(frame, text="Imprimir", command=almacenar)
button.grid(row=2, column=2, columnspan=2)


frame.pack()    # Cierra la ventana de interfaz
frame.mainloop()    # Cierra el Bucle para no tener uno de tipo infinito



COn lo que se las variables texto que eran cadenas vacias, y que no imprimian nada absolutamente.

Ahora la idea es que al programa se le ingrese mas de un nombre y que con el boton imprimir se escriban en el mismo archivo, que aparezca por ejemplo

Juan Perez
Maria Sandoval
.
.
.
.
.
Pedro Garcia

etc


Agradecere su ayuda.

Saludos nuevamente