Python - error en variable declarada como global

 
Vista:
sin imagen de perfil

error en variable declarada como global

Publicado por eduardo (6 intervenciones) el 19/06/2023 00:55:25
Buenas:
Estoy empezando a aprender python y quise trabajar con este ejemplo que consiste en crear un form principal y por medio de tres botones mostrar y ocultar el mismo .

Este es el codigo :

from tkinter import*
base = Tk()
base.geometry('500x500')
base.title("VENTANA PPAL")
global second

#ABRIR NUEVA VENTANA
def launch():
second = Toplevel()
second.geometry('300x300')

def show():
second.deiconify()

def hide():
second.withdraw()

Button(base,text = 'launch windows' , command=launch).pack( pady = 10 )
Button(base,text = 'show windows' , command=show).pack( pady = 10 )
Button(base,text = 'hide windows' , command=hide).pack( pady = 10 )
# ejecucion del programa

base.mainloop()

----------------------------------------
cuando hago click en el boton 'launch windows' me muestra el form secundario sobre el ppal sin problemas
cuando hago click en el boton show windows me sale este error :

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Usuario\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\python1\ventanasec.py", line 13, in show
second.deiconify()
NameError: name 'second' is not defined

Por lo que vengo leyendo , la variable second al estar definida como global tendria que estar disponible en todo el codgo

Si alguno me puede ayudar estaria agradecido. Gracias
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

error en variable declarada como global

Publicado por antonio (65 intervenciones) el 19/06/2023 14:37:49
Hola buenas te has equivocado poniendo el global second tienes que hacerlo en la función lunch:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from tkinter import*
base = Tk()
base.geometry('500x500')
base.title("VENTANA PPAL")
 
# Open New Window
def launch():
    global second
    second = Toplevel()
    second.title("Child Window")
    second.geometry("300x300")
 
# Show the window
def show():
    second.deiconify()
 
# Hide the window
def hide():
    second.withdraw()
 
Button(base,text = 'launch windows' , command=launch).pack( pady = 10 )
Button(base,text = 'show windows' , command=show).pack( pady = 10 )
Button(base,text = 'hide windows' , command=hide).pack( pady = 10 )
# ejecucion del programa
 
base.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
sin imagen de perfil

error en variable declarada como global

Publicado por eduardo (5 intervenciones) el 19/06/2023 23:19:16
desde ya gracias por la rta:
Lo que me olvide de aclarar antes es que antes de mandar la consulta esa variable ya la habia declarado en el launch y al ejecutar me daba tmb error:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Usuario\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\python1\ventanasec.py", line 14, in show
second.deiconify()
File "C:\Users\Usuario\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 2042, in wm_deiconify
return self.tk.call('wm', 'deiconify', self._w)
_tkinter.TclError: bad window path name ".!toplevel"
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

error en variable declarada como global

Publicado por antonio (65 intervenciones) el 20/06/2023 17:03:32
Porque second debe ser inicializado antes de darle a otro botón, es decir, o compruebas en los otros métodos si esta inicializado o te dará error.
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 Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

error en variable declarada como global

Publicado por Antoni Masana (67 intervenciones) el 20/06/2023 19:23:22
He probado esto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from tkinter import*
base = Tk()
base.geometry('500x500')
base.title("VENTANA PRINCIPAL")
global second
second = Toplevel()
 
# Open New Window
def launch():
    global second
    second = Toplevel()
    second.title("Child Window")
    second.geometry("300x300")
 
# Show the window
def show():
    global second
    second = Toplevel()
    second.deiconify()
 
# Hide the window
def hide():
    global second
    second = Toplevel()
    second.withdraw()
 
Button(base,text = 'launch windows' , command=launch).pack( pady = 10 )
Button(base,text = 'show windows'   , command=show).pack( pady = 10 )
Button(base,text = 'hide windows'   , command=hide).pack( pady = 10 )
# ejecucion del programa
 
base.mainloop()

No da error.
No estoy seguro de que hace lo que realmente se quiere que haga.

Saludos.
\\//_
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