Я думаю, вам следует немного упростить задачу, используя список для хранения полей ввода.
Для этого я думаю, что было бы лучше добавить рамки для каждого набора виджетов и использовать индекс диапазона, чтобы получить то, что нам нужно.
Я немного изменил ваш код, чтобы упростить работу с индексом списка, а также добавил кнопку, которая будет распечатывать каждый выбранный путь в каждом поле ввода, чтобы показать, что эти значения доступны.
import tkinter as tk
from tkinter import ttk, filedialog
LARGE_FONT = ("Arial", 12)
MEDIUM_FONT = ("Arial", 11)
REGULAR_FONT = ("Arial", 10)
text_z = ["Select file 1", "Select the file 2", "Select file 3", "Select file 4"]
window = tk.Tk()
def click(x):
z = tk.filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=(("Excel file", "*.xlsx"), ("All files", "*.*")))
a[x].insert(tk.END, z)
ttk.Label(window, text="file load", font=LARGE_FONT, background="white").grid(row=1, column=0, padx=20, pady=10, sticky="w")
a=[]
for i in range(len(text_z)):
frame = tk.Frame(window)
frame.grid(row=i+2, column=0, sticky="nsew")
ttk.Label(frame, text=text_z[i], background="white").grid(row=0, column=0, columnspan=3, padx=10, pady=2, sticky="w")
a.append(ttk.Entry(frame, width=60, background="gray"))
a[i].grid(row=1, column=0, columnspan=3, padx=10, sticky="ew")
ttk.Button(frame, text="Search", width=10, command=lambda x=i: click(x)).grid(row=1, column=3, padx=5, sticky="w")
def pring_current_paths():
for ndex, entry in enumerate(a):
print("Entry {}: ".format(ndex, entry.get()))
tk.Button(window, text="Print gurrent paths!", command=pring_current_paths).grid()
window.mainloop()