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.

Obtén el nombre de archivo en Tkinter y muéstralo después de elegirlo.

El programa debería crear una ventana y colocar un botón en el centro. Cuando se presiona el botón, se abre una ventana del sistema donde se debe elegir un archivo y, después de eso, se debe escribir el nombre del archivo debajo del botón. Tengo problemas con la última parte, el nombre del archivo solo se muestra en la consola. Intenté sacar ‘filename’ de la función, pero obtuve un error.

import tkinter as tk
from tkinter import filedialog
from tkinter.constants import CENTER
from tkinter.filedialog import askopenfilename

def UploadAction(event=None):
    filename = filedialog.askopenfilename()
    print('Seleccionado:', filename)

root= tk.Tk()

canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()

button1 = tk.Button(text='Haz click',command=UploadAction, bg='marrón',fg='blanco')
canvas1.create_window(150, 150, window=button1)
button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
canvas1.create_text(relx = 0.5, rely = 0.7, anchor=CENTER, text= filename, fill="negro", font=('Helvetica 15 bold'))

root.mainloop()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el nombre de archivo seleccionado en el botón después de haber sido elegido usando la ventana del sistema, es necesario modificar la función UploadAction y el widget Button.

    Primero, es necesario hacer que la variable filename sea global para poder acceder a ella fuera de la función. Para hacer esto, añade la línea global filename dentro de la función.

    A continuación, en lugar de imprimir el nombre de archivo, es necesario establecer el atributo text del widget Button con el nombre de archivo. Para hacer esto, utiliza button1.config(text=filename) después de que filename ha sido seleccionado.

    Aquí está el código actualizado:

    import tkinter as tk
    from tkinter import filedialog
    from tkinter.constants import CENTER
    from tkinter.filedialog import askopenfilename
    
    def UploadAction(event=None):
        global filename
        filename = filedialog.askopenfilename()
        print('Seleccionado:', filename)
        button1.config(text=filename)
    
    root= tk.Tk()
    
    canvas1 = tk.Canvas(root, width = 300, height = 300)
    canvas1.pack()
    
    button1 = tk.Button(text='Haz clic',command=UploadAction, bg='brown',fg='white')
    canvas1.create_window(150, 150, window=button1)
    button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
    
    root.mainloop()
    

    Ahora, cuando hagas clic en el botón para elegir un archivo, el nombre de archivo seleccionado se mostrará en el botón.

Comments are closed.