Skip to content
Snippets Groups Projects
PyNutilGUI.py 4.89 KiB
import tkinter 

from tkinter import *
from tkinter import ttk
import brainglobe_atlasapi
import PyNutil
from tkinter.filedialog import askopenfilename
from tkinter import colorchooser


#Basic GUI example   
root = Tk()
#root.geometry("300x300")
root.title("PyNutil")
root.wm_iconbitmap("Logo_PyNutil.ico")
#photo = tkinter.PhotoImage(file = 'Logo_PyNutil.ico')
#root.wm_iconphoto(False, photo)

arguments = {
   "registration_json":None,
   "object_colour":None
}

atlas = brainglobe_atlasapi.list_atlases.get_all_atlases_lastversions()

selected_atlas = StringVar(value="Reference Atlas")

directory = ["select","select1", "select2"]
selected_directory = StringVar(value="directory")

colour = ["colour","black","red","blue","green"]
selected_colour = StringVar(value=colour[0])

def donothing():
   filewin = Toplevel(root)
   label = Label(filewin, text="Do nothing")
   label.pack()
   
def about_pynutil():
   filewin = Toplevel(root)
   label = Label(filewin, text="PyNutil is an application for brain-wide mapping using a reference brain atlas")
   label.pack()
   
def open_registration_json():
   value = askopenfilename()
   arguments["registration_json"] = value
   print(arguments)

def choose_colour():
   value = colorchooser.askcolor()
   arguments["object_colour"] = value
   print(list(value[0]))

def start_analysis():
   #your code here
   return

#Creating a menu
root.option_add('*tearOff', FALSE)
#win = Toplevel(root)
#menubar = Menu(win)
menubar = Menu(root)
#win['menu'] = menubar
root.config(menu=menubar)

#menubar = Menu(root)
menu_file = Menu(menubar)
menu_help = Menu(menubar)
menubar.add_cascade(menu=menu_file, label='File')
menubar.add_cascade(menu=menu_help, label='Help')

menu_file.add_command(label='New', command=donothing)
menu_file.add_command(label='Exit', command=root.quit)
menu_help.add_command(label='About PyNutil', command=about_pynutil)

#Creating a content frame"
mainframe = ttk.Frame(root, padding="12 12 12 12") # left top right bottom
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1) # column to expand if there is extra space
root.rowconfigure(0, weight=1) # row to expand if there is extra space

#Creating a content frame"
bottomframe = ttk.Frame(root, padding="12 12 12 12") # left top right bottom
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1) # column to expand if there is extra space
root.rowconfigure(0, weight=1) # row to expand if there is extra space

# Select reference atlas
ttk.Label(mainframe, text="Select reference atlas:", width=25).grid(column=1, row=1, sticky=W)
ttk.OptionMenu(mainframe, selected_atlas, "Reference Atlas", *atlas).grid(column=2, row=1, columnspan=2)
ttk.Button(mainframe, text="Help", width=8, command="buttonpressed").grid(column=4, row=1, sticky=W)

#Select registration JSON
ttk.Label(mainframe, text="Select registration JSON:", width=25).grid(column=1, row=2, sticky=W)
ttk.Button(mainframe, width=16, text="Browse...", command=open_registration_json).grid(column=2, row=2, sticky=W)
Text(mainframe, height = 1, width =40).grid(column=3, row=2, sticky= W)
ttk.Button(mainframe, text="Help", width=8, command="buttonpressed").grid(column=4, row=2, sticky=W)

#Select segmentation folder
ttk.Label(mainframe, text="Select segmentation folder:", width=25).grid(column=1, row=3, sticky=W)
ttk.Button(mainframe, width=16, text="Browse...", command="buttonpressed").grid(column=2, row=3, sticky=W)
Text(mainframe, height = 1, width =40).grid(column=3, row=3, sticky= W)
ttk.Button(mainframe, text="Help", width=8, command="buttonpressed").grid(column=4, row=3, sticky=W)

#Select object colour
ttk.Label(mainframe, text="Select object colour:", width=25).grid(column=1, row=4, sticky=W)
ttk.Button(mainframe, width=16, text="Colour", command=choose_colour).grid(column=2, row=4, sticky=W)
Text(mainframe, height = 1, width =40).grid(column=3, row=4, sticky= W)
ttk.Button(mainframe, text="Help", width=8, command="buttonpressed").grid(column=4, row=4, sticky=W)

#Select output directory
ttk.Label(mainframe, text="Select output directory:", width=25).grid(column=1, row=5, sticky=W)
ttk.Button(mainframe, width=16, text="Browse...", command="buttonpressed").grid(column=2, row=5, sticky=W)
Text(mainframe, height = 1, width =40).grid(column=3, row=5, sticky= W)
ttk.Button(mainframe, text="Help", width=8, command="buttonpressed").grid(column=4, row=5, sticky=W)

#Start analysis
ttk.Label(mainframe, text="Start analysis:", width=25).grid(column=1, row=6, sticky=W)
ttk.Button(mainframe, width = 52, text="Run", command="buttonpressed").grid(column= 3, row=6)
ttk.Button(mainframe, text="Docs", width=8, command="buttonpressed").grid(column=4, row=6, sticky=W)

# sunken frame around mainframe
"""
mainframe['borderwidth'] = 2
mainframe['relief'] = 'sunken'
"""

#button.configure()

root.mainloop()