-
Sharon Christine Yates authored56efb743
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()