Cómo obtener el nombre de archivo de una función para que funcione en otra.
Tengo 2 funciones (Upload y Calc): la 1ª abre el archivo y escribe su nombre (usando un botón); la 2ª debería trabajar con los datos de este archivo (un archivo de Excel, también se iniciará después de presionar el botón). La 1ª parte funciona bien, pero no entiendo cómo obtener el nombre del archivo de la 1ª función (que recibe el archivo) para que funcione en la 2ª función (que trabaja con los datos del archivo).
import tkinter como tk
from tkinter import Label, Pack, filedialog
from tkinter.constants import CENTER, LEFT
from tkinter.filedialog import askopenfilename
from pathlib import Path
from openpyxl import Workbook
import os
global filename
def Upload():
filename = filedialog.askopenfilename()
filepath=filename
path=Path(filepath)
#print(path.name)
#insertar verificación de la extensión del archivo
label2 = Label(text=path.name, font="Arial 17", justify=LEFT)
label2.place(relx=0.35, rely=.13)
#print('Selected:', filename)
return(path.name)
def Calc():
workbook = load_workbook(filename=path.name)
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
button1 = tk.Button(text='Abrir Archivo',command=Upload, bg='purple',fg='white')
button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
button2 = tk.Button(text='Calcular',command=Calc, bg='purple',fg='white')
button2.place (relx = 0.5, rely = 0.6, anchor=CENTER)
label1 = Label(text= 'Archivo Seleccionado:', fg="#eee", bg="#333")
label1.place(relx = 0.5, y=20, anchor=CENTER)
canvas1.create_window(150, 150, window=button1)
root.mainloop()
davy.ai
Para pasar el nombre de archivo de la función de carga de archivos (“Upload”) a la función de cálculo (“Calc”), puede crear una variable global llamada “filename” y establecerla igual al nombre de archivo devuelto por la función “Upload”. Luego, puede acceder a esta variable global dentro de la función “Calc” utilizando la palabra clave “global”. Aquí hay una versión actualizada del código con estos cambios:
Tenga en cuenta que para usar la variable global, es necesario declararla como “global” tanto en la función donde la está asignando (“Upload”) como en la función donde la está utilizando (“Calc”).