Python - Mi variable se cambia a none sin razona aparente

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 11 puestos en Python (en relación al último mes)
Gráfica de Python

Mi variable se cambia a none sin razona aparente

Publicado por Óscar (5 intervenciones) el 15/03/2022 14:21:33
Estoy intentando crear un bloc de notas en python. De momento tengo des opciones creadas, guardar como, que funciona bien y guardar que aqui es donde me da el error. Cree una variable que se llama nombreFichero, esta empieza en None y la cambio en Guardar como substituyendo el None por el nombre que el usuario especifique. Cuando yo le doy a guardar si nombreFichero es igual a None me llevara a guardar como y esto funciona bien hasta que le das por segunda vez a guardar, que debería tener dentro el nombre del fichero creado al haber pasado por Guardar como, pero como se ve en ese print sigue teniendo el valor None y llama siempre a Guardar como. Aqui les dejo 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from tkinter import *
from tkinter import filedialog
from io import open
 
#Aqui creo la ventana
root=Tk()
miFrame=Frame()
miFrame.pack(fill="both", expand="True")
miFrame.config(width="1910", height="980")
 
global nombreFichero
nombreFichero=None
 
#Creo la función Guardar como
def GuardarComo(text):
    files = [("Documento de texto", "*.txt"),
            ("Todos los archivos", "*.*")]
    file = filedialog.asksaveasfile(filetypes = files, defaultextension = files)
    nombreFichero=file #hasta aqui bn, aqui es donde cambio el valor de nombreFichero
    filetext= str(text.get(1.0,END))
    try:
        file.write(filetext)
        file.close()
    except AttributeError:
        print("SE HA PRODUCIDO UN ERROR")
        return
 
#Creo la función guardar
def SaveFile(text):
    #Aqui es donde da el fallo, siempre que llega aqui llega None (la primera vez esta bien que llegue, ya que no lo hemos cambiado, pero la segunda vez que guardas ya no debería ser none)
    print(nombreFichero)
    if nombreFichero == None:
        GuardarComo(text)
    else:
        guardado=text.get(1.0, END)
        print(guardado)
 
 
 
texto = Text(miFrame, width="1900", height="980")
texto.place(x=0, y=0)
 
barraMenu=Menu(root)
root.config(menu=barraMenu, width=300, height=300)
 
archivoMenu=Menu(barraMenu, tearoff=0)
archivoMenu.add_command(label="Guardar", command=lambda:SaveFile(texto))
archivoMenu.add_command(label="Guardar como", command=lambda:GuardarComo(texto))
barraMenu.add_cascade(label="Archivo", menu=archivoMenu)
 
root.mainloop()
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 Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Mi variable se cambia a none sin razona aparente

Publicado por Antoni Masana (67 intervenciones) el 15/03/2022 20:53:32
Creo que asi funciona y no da error

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from tkinter import *
from tkinter import filedialog
from io import open
 
#Aqui creo la ventana
root=Tk()
miFrame=Frame()
miFrame.pack(fill="both", expand="True")
miFrame.config(width="1910", height="980")
 
global nombreFichero
nombreFichero=None
 
#Creo la funcion Guardar como
def GuardarComo(text):
    global nombreFichero
    files = [("Documento de texto", "*.txt"),
            ("Todos los archivos", "*.*")]
    file = filedialog.asksaveasfile(filetypes = files, defaultextension = files)
    print("Guardar Como: ", nombreFichero)
    nombreFichero=file #hasta aqui bn, aqui es donde cambio el valor de nombreFichero
    filetext= str(text.get(1.0,END))
    try:
        file.write(filetext)
        file.close()
    except AttributeError:
        print("SE HA PRODUCIDO UN ERROR")
        return
 
#Creo la funcion guardar
def SaveFile(text):
    #Aqui es donde da el fallo, siempre que llega aqui llega None
    #(la primera vez esta bien que llegue, ya que no lo hemos cambiado,
    #pero la segunda vez que guardas ya no deberia ser none)
    global nombreFichero
    print("Guardar: ", nombreFichero)
    if nombreFichero == None:
        GuardarComo(text)
    else:
        guardado=text.get(1.0, END)
        print(guardado)
 
texto = Text(miFrame, width="1900", height="980")
texto.place(x=0, y=0)
 
barraMenu=Menu(root)
root.config(menu=barraMenu, width=300, height=300)
 
archivoMenu=Menu(barraMenu, tearoff=0)
archivoMenu.add_command(label="Guardar", command=lambda:SaveFile(texto))
archivoMenu.add_command(label="Guardar como", command=lambda:GuardarComo(texto))
barraMenu.add_cascade(label="Archivo", menu=archivoMenu)
 
root.mainloop()


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
sin imagen de perfil
Val: 8
Ha disminuido su posición en 11 puestos en Python (en relación al último mes)
Gráfica de Python

Mi variable se cambia a none sin razona aparente

Publicado por Óscar (5 intervenciones) el 16/03/2022 17:20:32
Muchas gracias, ya me funciona
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