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: 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": #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
|