def init_frame2(self): # ============================================================================================================= # Frame 2 # # ============================================================================================================= run_frame2 = tkinter.Frame(self.plant_segapp) run_config = self.app_config["run_frame"] self.config_row_column(run_frame2, run_config) run_frame2.grid(row=int(run_config["row"]), column=int(run_config["column"]), sticky=self.stick_all) run_frame2["highlightthickness"] = run_config["highlightthickness"] run_frame2["bg"] = run_config["bg"] x = tkinter.Button(run_frame2, bg=convert_rgb(self.app_config["green"]), text="Add Custom Model", font=self.font_bold) x.grid(column=3, row=0, padx=10, pady=10, sticky=self.stick_all) x["command"] = self.load_custom_model x = tkinter.Button(run_frame2, bg=convert_rgb(self.app_config["green"]), text="PlantSeg Introduction", font=self.font_bold) x.grid(column=4, row=0, padx=10, pady=10, sticky=self.stick_all) x["command"] = self.open_documentation_index x = tkinter.Button(run_frame2, bg=convert_rgb(self.app_config["green"]), text="Reset Parameters", font=self.font_bold) x.grid(column=5, row=0, padx=10, pady=10, sticky=self.stick_all) x["command"] = self.reset_config self.run_button = tkinter.Button(run_frame2, bg=convert_rgb(self.app_config["green"]), text="Run", command=self._run, font=self.font_bold) self.run_button.grid(column=6, row=0, padx=10, pady=10, sticky=self.stick_all) self.run_frame2 = run_frame2
def rescale_button_widget(self): self.list_entry = ListEntry( self.popup, "Input your data resolution (zxy \u03BCm): ", row=1, column=0, type=float, font=self.font) self.list_entry(self.net_resolution, []) self.scale_factor = [] popup_button = tkinter.Frame(self.popup) popup_button.configure(bg="white") tkinter.Grid.rowconfigure(popup_button, 0, weight=1) tkinter.Grid.columnconfigure(popup_button, 0, weight=1) popup_button.grid(row=2, column=0, sticky=stick_all) button = tkinter.Button(popup_button, bg=convert_rgb(PLANTSEG_GREEN), text="Compute Rescaling Factor", command=self.update_input_resolution, font=self.font) button.grid(column=0, row=0, padx=10, pady=10, sticky=stick_all) search_button_frame = tkinter.Frame(self.popup) search_button_frame.configure(bg="white") tkinter.Grid.rowconfigure(search_button_frame, 0, weight=1) tkinter.Grid.columnconfigure(search_button_frame, 0, weight=1) search_button_frame.grid(row=3, column=0, sticky=stick_all) text = "or import resolution from file" label0 = tkinter.Label(search_button_frame, bg="white", text=text, font=self.font) label0.grid(column=0, row=0, padx=10, pady=10, sticky=stick_all) search_button = tkinter.Button( search_button_frame, bg=convert_rgb(PLANTSEG_GREEN), text="Compute Rescaling Factor From File", command=self.read_from_file, font=self.font) search_button.grid(column=0, row=1, padx=10, pady=10, sticky=stick_all) text = "N.B. Rescaling input data to the training data resolution has shown to be very helpful in some cases" \ " and detrimental in others." label1 = tkinter.Label(search_button_frame, bg="white", text=text, font=self.font) label1.grid(column=0, row=2, padx=10, pady=10, sticky=stick_all)
def __call__(self, value, obj_collection): global current_segmentation label1 = tkinter.Label(self.frame, bg=self.style["bg"], text=self.text, anchor="w", font=self.font) label1.grid(column=0, row=0, padx=self.style["padx"], pady=self.style["pady"], sticky=tkinter.W) entry1 = tkinter.Scale(self.frame, from_=self.min, to=self.max, resolution=self.interval, orient=tkinter.HORIZONTAL, font=self.font) entry1.configure(bg="white") entry1.configure(troughcolor=convert_rgb(PLANTSEG_GREEN)) entry1.configure(length=200) entry1.set(self.type(value)) entry1.grid(column=1, row=0, padx=self.style["padx"], pady=self.style["pady"], sticky=tkinter.E) self.tk_value = entry1 obj_collection.append(label1) obj_collection.append(entry1) return obj_collection
def place_module(self, module_name): self.checkbox = tkinter.Checkbutton(self.frame, bg=convert_rgb((208, 240, 192)), text=module_name, font=self.font) self.checkbox.grid(column=0, row=0, padx=self.style["padx"], pady=self.style["pady"], sticky=stick_all)
def load_model_button(self): popup_load = tkinter.Frame(self.popup) tkinter.Grid.rowconfigure(popup_load, 0, weight=1) tkinter.Grid.rowconfigure(popup_load, 1, weight=3) tkinter.Grid.rowconfigure(popup_load, 2, weight=1) tkinter.Grid.columnconfigure(popup_load, 0, weight=1) popup_load.grid(row=1, column=0, sticky=stick_all) popup_load.configure(bg="white") self.file_dialog_frame(popup_load, row=0, column=0) self.simple_entry1 = SimpleEntry(popup_load, "Model Name: ", large_bar=True, row=1, column=0, _type=str, _font=self.font) self.simple_entry1("custom_net", []) self.list_entry = ListEntry( popup_load, "Input your training data resolution (zxy \u03BCm): ", row=2, column=0, type=float, font=self.font) self.list_entry([1., 1., 1.], []) self.simple_entry2 = SimpleEntry(popup_load, "Description: ", large_bar=True, row=3, column=0, _type=str, _font=self.font) self.simple_entry2("", []) button = tkinter.Button( popup_load, bg=convert_rgb(PLANTSEG_GREEN), text="Add Model Directory (This will restart PlantSeg," " all changes not saved will be deleted)", command=self.load_model, font=self.font) button.grid(column=0, row=4, padx=10, pady=10, sticky=stick_all)
def _show_options(self, config, module): if self.show.get(): self.checkbox["bg"] = convert_rgb((208, 240, 192)) for i, (key, value) in enumerate(config[module].items()): if key in self.custom_key: self.obj_collection = self.custom_key[key]( value, self.obj_collection) else: self.checkbox["bg"] = "white" self.update_config(config, module) for obj in self.obj_collection: obj.grid_forget() return config
def build_menu(self): menubar = tkinter.Menu(self.plant_segapp) menubar["bg"] = convert_rgb(self.app_config["green"]) filemenu = tkinter.Menu(menubar, tearoff=0) filemenu["bg"] = "white" filemenu.add_command(label="Open", command=self.open_config, font=self.font) filemenu.add_command(label="Save", command=self.save_config, font=self.font) filemenu.add_separator() filemenu.add_command(label="Restart", command=self.restart_program, font=self.font) filemenu.add_separator() filemenu.add_command(label="Exit", command=self.close, font=self.font) menubar.add_cascade(label="File", menu=filemenu, font=self.font) preferencesmenu = tkinter.Menu(menubar, tearoff=0) preferencesmenu["bg"] = "white" preferencesmenu.add_command(label="Font Size +", command=self.size_up, font=self.font) preferencesmenu.add_command(label="Font Size -", command=self.size_down, font=self.font) menubar.add_cascade(label="Preferences", menu=preferencesmenu, font=self.font) editmenu = tkinter.Menu(menubar, tearoff=0) editmenu["bg"] = "white" editmenu.add_command(label="Add Model", command=self.load_custom_model, font=self.font) editmenu.add_command(label="Remove Model", command=self.remove_model, font=self.font) menubar.add_cascade(label="Edit", menu=editmenu, font=self.font) helpmenu = tkinter.Menu(menubar, tearoff=0) helpmenu.add_command(label="PlantSeg Overview", command=self.open_documentation_index, font=self.font) helpmenu.add_command(label="Data Pre-Processing", command=self.open_documentation_preprocessing, font=self.font) helpmenu.add_command(label="CNN Predictions", command=self.open_documentation_3dunet, font=self.font) helpmenu.add_command(label="Segmentation", command=self.open_documentation_segmentation, font=self.font) helpmenu.add_command(label="Data Post-Processing", command=self.open_documentation_preprocessing, font=self.font) helpmenu.add_separator() helpmenu.add_command(label="About...", command=version_popup, font=self.font) helpmenu["bg"] = "white" menubar.add_cascade(label="Help", menu=helpmenu, font=self.font) self.plant_segapp.config(menu=menubar)
def report_error(data, font=None, depth=3): """ creates pop up and show error messages """ data = data if type(data) is str else f"Unknown Error. Error type: {type(data)} \n {data}" # reduce message depth data = '\n' + ''.join([f"{_str} \n" for _str in data.split('\n')[-depth:]]) default = "The complete error message is reported in the terminal." \ " If the error persists, please let us know by opening an issue on" \ " https://github.com/hci-unihd/plant-seg." popup = tkinter.Tk() popup.title("Error") popup["bg"] = "white" tkinter.Grid.rowconfigure(popup, 0, weight=1) tkinter.Grid.rowconfigure(popup, 1, weight=2) tkinter.Grid.columnconfigure(popup, 0, weight=1) x = tkinter.Label(popup, bg="white", text=default, font=font) x.grid(column=0, row=0, padx=10, pady=10, sticky=stick_all) x = tkinter.Label(popup, bg=convert_rgb((240, 192, 208)), text=data, font=font) x.grid(column=0, row=1, padx=10, pady=10, sticky=stick_all)