Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: twhite1195 en 15 Abril 2015, 03:31 am



Título: ayuda con Tkinter
Publicado por: twhite1195 en 15 Abril 2015, 03:31 am
Estoy teniendo problemas con un proyecto que debo hacer en python. Debo crear un programa para una cadena de centros comerciales, cada usuario debe inscribirse para poder comprar.
Tengo un menu principal con 3 botones, el boton de registrar me abre otra ventana con los espacios a rellenar para el usuario y un boton de "aceptar", ese boton deberia agregar los datos dados por el usuario a una lista. Mi problema es el siguiente: actualmente ya la funcion que convierte los datos de la ventana a una lista esta funcional... si la ejecuto en un archivo aparte. Al implementarla al archivo "principal" con el menu principal me da un error.

esta es la funcion que agrega los datos dados a una lista:

Código:
from tkinter import *



gui = Tk()

gui.wm_title("Registro")

milista = []

def get_data(l):
    l.append(box1.get())
    l.append(box2.get())
    l.append(box3.get())
    l.append(box4.get())
    print(l)
       
#etiqueta cedula
var1 = StringVar()
var1.set("Cedula:")
label1 = Label(gui,textvariable=var1,height = 2)
label1.grid(row=0,column=0)
#caja cedula
Cedula=StringVar()
box1=Entry(gui,bd=4,textvariable=Cedula)
box1.grid(row=0,column=1)
#etiqueta nombre
var2 = StringVar()
var2.set("Nombre:")
label2 = Label(gui,textvariable=var2,height = 2)
label2.grid(row=2,column=0)
#caja nombre
Nombre=StringVar()
box2=Entry(gui,bd=4,textvariable=Nombre)
box2.grid(row=2,column=1)
#etiqueta telefono
var3 = StringVar()
var3.set("Telefono:")
label3 = Label(gui,textvariable=var3,height = 2)
label3.grid(row=3,column=0)
#caja telefono
Telefono=StringVar()
box3=Entry(gui,bd=4,textvariable=Telefono)
box3.grid(row=3,column=1)
#etiqueta pais
var4 = StringVar()
var4.set("Pais:")
label4 = Label(gui,textvariable=var4,height = 2)
label4.grid(row=4,column=0)
#caja pais
Pais=StringVar()
box4=Entry(gui,bd=4,textvariable=Pais)
box4.grid(row=4,column=1)
#boton para salvar los datos
botonA= Button(gui, text = "aceptar",command=lambda: get_data(milista), width=5)
botonA.grid(row=0,column=2)

y este es el programa "principal":
Código:
#Importaciones de Tkinter
from tkinter import *
import tkinter.messagebox
import tkinter.font
from PIL import Image
from PIL import ImageTk

def get_data(l):
    l.append(box1.get())
    l.append(box2.get())
    l.append(box3.get())
    print(l)
#registro
def registro():
   
    #abre la ventana nueva con la funcion de registro
    registrowin=Toplevel(gui)
    registrowin.title("Registro de nuevo usuario")
    registrowin.geometry("300x300")
   
   #etiqueta cedula
    var1 = StringVar()
    var1.set("Cedula:")
    label1 = Label(registrowin,textvariable=var1,height = 2)
    label1.grid(row=0,column=0)
    #caja cedula
    Cedula=StringVar()
    box1=Entry(registrowin,bd=4,textvariable=Cedula)
    box1.grid(row=0,column=1)
    #etiqueta nombre
    var2 = StringVar()
    var2.set("Nombre:")
    label2 = Label(registrowin,textvariable=var2,height = 2)
    label2.grid(row=2,column=0)
    #caja nombre
    Nombre=StringVar()
    box2=Entry(registrowin,bd=4,textvariable=Nombre)
    box2.grid(row=2,column=1)
    #etiqueta telefono
    var3 = StringVar()
    var3.set("Telefono:")
    label3 = Label(registrowin,textvariable=var3,height = 2)
    label3.grid(row=3,column=0)
    #caja telefono
    Telefono=StringVar()
    box3=Entry(registrowin,bd=4,textvariable=Telefono)
    box3.grid(row=3,column=1)
    #boton para salvar los datos
    botonA= Button(registrowin, text = "aceptar",command=lambda: get_data(milista), width=5)
    botonA.grid(row=0,column=2)

#ventana principal
gui=Tk()
gui.wm_title("MetroPyt")
gui.geometry("400x300+400+200")

milista=[]


#boton para agregar nuevo usuario
boton1=Button(gui,text="Registarse", command=registro)
boton1.grid(row=0,column=1)
#etiqueta del registro
v1=StringVar()
v1.set("Registrarse")
l1 = Label(gui,textvariable=v1,height = 2)
l1.grid(row=2,column=1)
#boton para realizar una compra
boton2=Button(gui,text="Realizar compra")
boton2.grid(row=0, column=2)
#etiqueta de la compra
v2=StringVar()
v2.set("Realizar compra")
l2 = Label(gui,textvariable=v2,height = 2)
l2.grid(row=2,column=2)
boton3=Button(gui,text="carrito",bg="white")
boton3.grid(row=0,column=3)
#etiqueta del carrito
v3=StringVar()
v3.set("Carrito")
l3 = Label(gui,textvariable=v3,height = 2)
l3.grid(row=2,column=3)


gui.mainloop()

al ejecutarlo me dice que la variable box1 no existe, cuando claramente esta ahi, y el programa se ejecuta bien por si solo.

por favor ayudenme