--- a +++ b/GUI.py @@ -0,0 +1,150 @@ +from tkinter import * +import tkinter.font as tkFont +from tkinter import ttk + +with open("D:\Cancer_Project\Team8_Cancer_ML\project_variables.txt","r") as projectVars: + vars=projectVars.readlines() + +window = Tk() + +window.title("Cancer ML") + +window.iconbitmap("D:\Cancer_Project\Team8_Cancer_ML\cancer_icon.ico") + +main_frame = Frame(window) +main_frame.pack(fill=BOTH,expand=1) + +canvas = Canvas(main_frame) +canvas.pack(side=LEFT, fill=BOTH, expand=1) + +# Add scrollbars to the canvas +scrollbar = ttk.Scrollbar(main_frame, orient=VERTICAL, command=canvas.yview) +scrollbar.pack(side=RIGHT, fill=Y) + +scrollbar_x = ttk.Scrollbar(main_frame,orient=HORIZONTAL, command=canvas.xview) +scrollbar_x.pack(side=BOTTOM, fill=X) + +# Configure the canvas +canvas.configure(xscrollcommand=scrollbar_x.set) +canvas.configure(yscrollcommand=scrollbar.set) +canvas.bind("<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) + +second_frame = Frame(canvas) +canvas.create_window((0,0), window=second_frame, anchor="nw") + +# get screen dimensions +screenHeight = second_frame.winfo_screenheight() +screenWidth = second_frame.winfo_screenwidth() + +# make font for title +fontTitle = tkFont.Font(family="Georgia",size=20) + +# make font for variable labels +varFont = tkFont.Font(family="Times New Roman",size=16) + +# color for variable labels +varColor = "#262121" + +# make font for entry boxes +inputFont = tkFont.Font(family="Georgia",size=12) + +# make title +title = Label(second_frame,text="Data Page",font=fontTitle) +title.grid(column=1) + +# initalize vars +boolList = [] + +def true(): + global boolList + + bool = True + boolList.append(bool) + +def false(): + global boolList + + bool = False + boolList.append(bool) + +def makeButton(name): + label = Label(second_frame,text=name,font=varFont,fg=varColor) + label.grid(column=1,pady=40) + + button = Button(second_frame,text="True",width=25,height=3,font=inputFont,command=true,activebackground='orange') + button.grid(column=1) + + button = Button(second_frame,text="False",width=25,height=3,font=inputFont,command=false,activebackground='orange') + button.grid(column=1) + +def makeEntry(name): + entryText = StringVar() + + label = Label(second_frame,text=name,font=varFont,fg=varColor) + label.grid(column=1,pady=40) + + entry = Entry(second_frame,textvariable=entryText,font=inputFont,width=25) + entry.grid(column=1) + return entryText + +# initialize list for entryText vars +entryText_list = [] + +# initialize lists for var names +varList_txt = [] +varList_bool = [] + +for var in vars: + var = str(var) + # checking if variable is a string + i = var.find('"') + + # check if string contains tuple + t = var.find("(") + t2 = var.find(")") + + # check if string contains numbers + n = any(char.isdigit() for char in var) + + # Only use part of variable before equal sign + var = var.rsplit('=', 1)[0] + + if i == -1 and t == -1 and t2 == -1 and n == False: + makeButton(var[:-1]) + varList_bool.append(var) + else: + entryText = makeEntry(var[:-1]) + entryText_list.append(entryText) + varList_txt.append(var) + +# make new list for converted tkinter objects +txtEntry_list = [] + +def Continue(): + global txtEntry_list + + for entries in entryText_list: + txtEntry = entries.get() + entries.set("") + txtEntry_list.append(txtEntry) + + window.quit() + +# initialize bool +useDefaults = False + +def useDefault(): + global useDefaults + + useDefaults = True + window.quit() + +# make default button +defaultButton = Button(second_frame,text="Use Defaults",bg="orange",command=useDefault,font=varFont) +defaultButton.grid(column=2,padx=screenWidth/1.4) + +# make continue button +contButton = Button(second_frame,text="Continue",bg="orange",command=Continue,font=varFont) +contButton.grid(column=2,padx=screenWidth/1.4) + +window.mainloop() \ No newline at end of file