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.

El (initialdir) en el filedialog de tkinter no está funcionando con una variable.

Estoy haciendo un programa simple que mueve archivos y lo tengo configurado para obtener las rutas de los archivos desde un documento de texto para no tener que ingresarlos cada vez.

Aquí está la función de uno de los botones:

def XboxClick():
     pathfinder = open("settings.txt", "r")
     xboxsavepath = pathfinder.readline()
     steamsavepath = pathfinder.readline()
     pathfinder.close
     #lbl.configure(text=xboxsavepath)
     xboxsavefile = filedialog.askopenfilename(title="Seleccionar el archivo de guardado de Xbox", initialdir=xboxsavepath)

En el documento de texto, esta línea es C:/Users/username/AppData/Local/Packages/.

La línea en comentario #lbl.configure(text=xboxsavepath) retornará C:/Users/username/AppData/Local/Packages/.

Si hago:

xboxsavefile = filedialog.askopenfilename(title="Seleccionar el archivo de guardado de Xbox", initialdir='C:/Users/username/AppData/Local/Packages/')

Abrirá la ventana de selección de archivo en ese directorio.

Sin embargo, cuando uso la variable xboxsavepath, que utiliza exactamente la misma cadena, simplemente se abre la ventana de selección de archivo en el directorio predeterminado. No sé por qué.

Espero que esa sea suficiente información.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede ser con la forma en que se lee la variable xboxsavepath del documento de texto. Es posible que se incluyan caracteres adicionales, como espacios o saltos de línea, al momento de leerla.

    Una solución podría ser eliminar cualquier carácter adicional de la variable xboxsavepath antes de utilizarla como initialdir para el filedialog. Esto se puede hacer utilizando el método strip():

    xboxsavepath = pathfinder.readline().strip()
    

    Esto eliminará cualquier espacio o salto de línea al principio o al final de la cadena leída del documento de texto.

    Otra solución podría ser verificar el contenido del documento de texto para asegurarse de que no haya caracteres adicionales o problemas de formato que estén causando el problema.

Comments are closed.