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