70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
# 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()
|