Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Llamando variable desde otra funcion
#1
Hola a todos, que tal? Estoy empezando a programar con Python y tengo un problema. Tengo una funcion que se llama ver_carga() que genera la interfaz grafica para cargar unos datos y luego tengo cargar_novedades() que imprime esos valores en un documento de excel. En el codigo llamo a ver_carga() el cual incluye al final un boton que llama a cargar_novedades()

Código:
btn = Button(window, text="Cargar datos", command=cargar_novedades)

pero cuando le doy click la consola muestra el siguiente error:
Cita:File "C:\Users\Sentey\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "C:\desarrollo\sueldos\0.3_prueba ventana.py", line 68, in cargar_novedades
    sheet = excel_document[ingrese_empleado.get()]

En ver_carga() tengo
Código:
ingrese_empleado_label = Label(window, text="Ingrese empleado")
ingrese_empleado_label.place(x=20, y=60)
ingrese_empleado = Combobox(window)
ingrese_empleado['values']= excel_document.sheetnames
ingrese_empleado.current(0) #set the selected item
ingrese_empleado.place(x=160, y=60)


y en cargar_novedades()
Código:
sheet = excel_document[ingrese_empleado.get()]

Y no encuentro el error :/ Podrian ayudarme? Gracias.
Responder
#2
Hola, bienvenido.

El problema es que si definís la variable ingrese_empleado dentro de una función, entonces es una variable local, por lo cual no tiene visibilidad fuera de esa función. En ese caso deberías usar una variable global, algo así:

  1. ingrese_empleado = None
  2.  
  3. def ver_carga():
  4. global ingrese_empleado
  5. # resto del código...


Sobre el uso del global te dejo esta explicación: https://micro.recursospython.com/recurso...lobal.html.

Con todo, lo ideal sería, en lugar de usar variables globales, estructurar tu aplicación usando orientación a objetos. Podés ver un ejemplo acá: https://recursospython.com/guias-y-manua...a-tkinter/.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)