# https://stackoverflow.com/questions/70614386/passing-values-tkinter-elements-between-classes-in-tkinter import os import tkinter as tk from tkinter import filedialog class MainFrame: def __init__(self, master): self.file_selection = FileSelect(master, main=self) self.file_load = LoadFiles(master, main=self) class FileSelect: def __init__(self, master, main): self.main = main self.files = [] # Frame self.frame = tk.LabelFrame(master, text="File Selection") self.frame.grid(row=0, column=0) # Select directory button tk.Button(self.frame, text="Open:", command=self.directory_path).grid( row=0, column=0 ) # Directory Selection def directory_path(self): # Select filepath directory = filedialog.askdirectory(initialdir="/", title="Select a directory") os.chdir(directory) # Populate list of files for tb in os.listdir(directory): self.files.append(tb) # Update GUI, activate button in different class if condition met if len(os.listdir(directory)) == 0: self.main.file_load.import_files_button["state"] = tk.DISABLED else: self.main.file_load.import_files_button["state"] = tk.NORMAL class LoadFiles: def __init__(self, master, main): self.main = main # Frame self.frame = tk.LabelFrame(master, text="File loading") self.frame.grid(row=1, column=0) # Load button self.import_files_button = tk.Button( self.frame, text="Import TB", command=self.print_files, state=tk.DISABLED ) self.import_files_button.grid(row=0, column=0, sticky="EW") # Tkinter Elements... def print_files(self): print(self.main.file_selection.files) if __name__ == "__main__": root = tk.Tk() MainFrame(root) root.mainloop()