Python - Problema con un Listbox tkinter

 
Vista:

Problema con un Listbox tkinter

Publicado por Alberto Guerrero (3 intervenciones) el 24/08/2017 11:35:10
Hola, soy nuevo en esto del Python, estoy creando una pantalla donde unos de los controles es un Listbox.
El problema es que me da un error y no soy capaz de ver por qué sale. os mando el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from Tkinter import *
import time
import serial
import sys  # import pySerial module
from functools import partial
 
root = Tk()
root.title("Pantalla")
root.attributes("-fullscreen",True)
root.geometry("800x480+0+0")
 
def lleno():
      plist = ['Diego', 'Matilde', 'Ramon']
      for item in plist:  # Insertamos los items en un Listbox
        lstBox.insert(END, item)
def pantalla():
      lstBox = Listbox(root).place(x=100,y=100)
      buttonfull = Button(root, text="Lleno", command=lleno, width=10).place(x=220, y=400)
 
pantalla()
 
root.mainloop()


el error que me da es :
File "C:/Python27/programas/pantalla/prueba_pantalla.py", line 17, in lleno
lstBox.insert(END, item)
NameError: global name 'lstBox' is not defined
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de José María
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema con un Listbox tkinter

Publicado por José María (245 intervenciones) el 24/08/2017 13:45:26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from Tkinter import *
import time
import sys # import pySerial module
from functools import partial
 
root = Tk()
root.title("Pantalla")
root.attributes("-fullscreen",True)
root.geometry("800x480+0+0")
 
def lleno():
    plist = ['Diego', 'Matilde', 'Ramon']
    for item in plist: # Insertamos los items en un Listbox
        lstBox.insert(END, item)
 
 
lstBox = Listbox(root)
lstBox.place(x=100,y=100)
buttonfull = Button(root, text="Lleno", command=lleno, width=10).place(x=220, y=400)
 
root.mainloop()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con un Listbox tkinter

Publicado por alberto (3 intervenciones) el 24/08/2017 18:35:40
Gracias por tu respuesta. Asi si me funcionaba. lo que quiero hacer es meterlo dentro del def pantalla.
Dentro del def pantalla, tengo metido varios label y varios button y me funcionan bien. El que no me funciona dentro del def pantalla es el listbox.

en cuanto lo meto dentro de pantalla(), no me funciona. No sé por qué.


Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de José María
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Problema con un Listbox tkinter

Publicado por José María (245 intervenciones) el 24/08/2017 19:16:51
Originalmente te daba error dentro de la función 'lleno' porque no encontraba la variable 'lstBox'

Las variables creadas dentro de un 'def' sólo tienen validez en ese 'def', no fuera.
Tu variable 'lstBox' la creaste en otro 'def',por eso no la encuentra.

Puedes crear 'lstBox' fuera del otro def, o pasarla como parámetro, pero ésto último no se permite.

Solución: Crear 'lstBox' fuera de la función. Puedes escribirla justo antes de 'pantalla()'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar