Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/09/2014, 12:42
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Respuesta: Duda con funciones.

Lo que pasa es que incurriste en varias malas practicas. Pero por ahora solo apuntare a una.

Vamos a ver la definición de la función.
Código Python:
Ver original
  1. def Agregar():
  2.     archivo = open("/home/b0nete/Documents/Ninja-IDE/Listado/personasFILE.csv", "a") #a = APPEND
  3.     archivo.write(txtNombre.get() +","+ txtApellido.get() + "\n")
  4.     archivo.close()
Como puedes ver, ¿Donde esta definido txtApellido y txtNombre? No esta dentro de tu función esto hace que tu funcion este fuertemente ligada a donde quiera que estén txtApellido y txtNombre.

¿Como hacer esto un poco mas reusable?
Código Python:
Ver original
  1. def Agregar(nombre, apellido):
  2.     archivo = open("/home/b0nete/Documents/Ninja-IDE/Listado/personasFILE.csv", "a") #a = APPEND
  3.     archivo.write(nombre +","+ apellido + "\n")
  4.     archivo.close()
Mira que ahora nombre y apellido si estan definidas en la función porque son parámetros que estas esperando. Mas aun, estas esperando solamente el string nada de objetos secundarios que esperas que tengan el método get. Tampoco te importa de donde vengan, tal vez vienen de cajitas de texto o de string hardcodeadas, de un raw_input, de un archivo, realmente no importa de donde lo saques, solo sabes que quieres 2 strings y punto.

El error que te marca
Código:
NameError: global name 'txtNombre' is not defined
Es porque cuando llega a la parte de archivo.write(txtNombre.get() +","+ txtApellido.get() + "\n") txtNombre no se encuentra definido.

Mi recomendaciones:
1. No copies y pegues código sin leerlo.
2. Haz tus funciones reusables.