import tkinter from tkinter import * from tkinter import ttk import brainglobe_atlasapi import PyNutil from tkinter.filedialog import askopenfilename from tkinter.filedialog import askdirectory from tkinter import colorchooser from PyNutil import PyNutil # 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 = { "reference_atlas": None, "registration_json": None, "object_colour": None, "segmentation_dir": None, "output_dir": 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["registration_json"]) def choose_colour(): value = colorchooser.askcolor() arguments["object_colour"] = value print(list(value[0])) def open_segmentation_dir(): value = askdirectory() arguments["segmentation_dir"] = value print(arguments["segmentation_dir"]) def select_output_dir(): value = askdirectory() arguments["output_dir"] = value print(arguments["output_dir"]) def start_analysis(): pnt = PyNutil( segmentation_folder=open_segmentation_dir, #'../tests/test_data/big_caudoputamen_test/', alignment_json=open_registration_json, #'../tests/test_data/big_caudoputamen.json', colour=choose_colour, # [0, 0, 0], atlas_name="allen_mouse_25um", ) pnt.get_coordinates(object_cutoff=0) pnt.quantify_coordinates() pnt.save_analysis("../tests/outputs/test9_PyNutil_bigcaudoputamen_new") # 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=open_segmentation_dir).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=select_output_dir).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()