es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La información que el usuario introduce no se registra en un archivo.

Estoy trabajando en un proyecto en Python, creando una aplicación de GUI. Aquí está una parte de mi código:

class Register(Frame):
        def __init__(self, master):
            Frame.__init__(self, master)
            self.config(bg = "black")

            def register_user():
                username_info = username.get()
                password_info = password.get()
                username_entry.delete(0, END)
                password_entry.delete(0, END)
                file = open(username_info, "w")
                file.write(username_info + "\n")
                file.write(password_info + "\n")
                file.close()


                Label(register_user, text="Registration Success", fg="black", font=("calibri", 12)).pack()



            Label(self,text="Please enter details below to Register", bg="white").pack()
            Label(self,text="").pack()

            username = Label(self, text="Username: ", bg="black", fg="white")
            username.pack()
            entryusername = Entry(self, width=20, bg="white")
            entryusername.pack()

            pw = Label(self, text="Password: ", bg="black", fg="white")
            pw.pack()
            entrypw = Entry(self, width=20, bg="white")
            entrypw.pack()

            save = Button(self, text="Save", width=8, command=lambda: master.switch(Login))
            save.pack(padx=10, pady=10)

Mi problema es que una vez que el usuario registra su nombre de usuario y su contraseña, no se guarda en un archivo. Entonces, una vez que el usuario intenta iniciar sesión, dice que el usuario no se encuentra.

No puedo averiguar qué falta, sería bueno si alguien pudiera echarme una mano.

Gracias

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con el código es que el archivo se está creando con el nombre de usuario como resultado de su nombre, pero no se está creando en un directorio específico. Esto significa que el archivo se está creando en el directorio de trabajo actual, que puede no ser el directorio donde se encuentra la aplicación.

    Para resolver este problema, debe especificar el directorio donde se debe crear el archivo. Una forma de hacer esto es creando un directorio específico para la aplicación (por ejemplo, “mis_datos_de_aplicación”) y almacenando todos los archivos relacionados con la aplicación en este directorio. Luego, puede modificar la variable “file” para incluir la ruta del directorio y el nombre del archivo, de esta manera:

    import os
    
    ...
    
    def register_user():
        username_info = username.get()
        password_info = password.get()
        username_entry.delete(0, END)
        password_entry.delete(0, END)
        directory = "mis_datos_de_aplicación"
        if not os.path.exists(directory):
            os.makedirs(directory)
        file_path = os.path.join(directory, username_info)
        with open(file_path, "w") as f:
            f.write(username_info + "\n")
            f.write(password_info + "\n")
        Label(register_user, text="Registro exitoso", fg="black", font=("calibri", 12)).pack()
    

    En este código actualizado, primero verificamos si el directorio “mis_datos_de_aplicación” existe. Si no existe, lo creamos utilizando la función “os.makedirs ()”. Luego, creamos la variable “file_path” uniendo el directorio y el nombre de usuario utilizando la función “os.path.join ()”. Finalmente, escribimos la información de nombre de usuario y contraseña en el archivo utilizando un bloque “with open () as f”, que cierra automáticamente el archivo cuando haya finalizado.

    Al usar este enfoque, puede asegurarse de que los archivos se almacenen en una ubicación predecible, lo que facilitará su acceso más tarde.

Comments are closed.