Tengo un botón que ejecuta la función askopenfilename.

filebutton = tk.Button(text = "Choose file ...",
                       command = lambda: openfile())

Esta es la función openfile:

def openfile():
    filename = tkinter.filedialog.askopenfilename(filetypes = (("Excel", "*.xlsx"), 
                                                               ("All files", "*.*")))
    print(filename)

Todo funciona como se esperaba y el nombre del archivo se imprime en la consola. Pero lo que realmente quiero es almacenar el nombre del archivo en una variable para poder leer los datos de una hoja de Excel con pandas como ese:

Data = pd.read_excel(filename)

¿Cómo puedo conseguir esto? ¿O hay una mejor manera con otras funciones?

0
TobiSonne 26 jun. 2019 a las 17:35

1 respuesta

La mejor respuesta

No puede recuperar los datos en la llamada de la función Botones. Si tuviste una variable global,

def openfile():
    global filename = tkinter.filedialog.askopenfilename(filetypes = (("Excel", "*.xlsx"), 
                                                               ("All files", "*.*")))
    print(filename)

, podría acceder a él desde fuera de la función llamada por un botón.

Cómo lo he visto en el pasado está usando clases. Esta tutorial en línea divide el programa Tkinter en las clases. Si siguió esta estructura, podría crear una variable de clase filename. Esto le permitiría manipular el archivo dentro de esa instancia de la clase.

1
LukeDev 26 jun. 2019 a las 16:24