Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
    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)
Пример #5
0
    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
Пример #7
0
    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)
Пример #8
0
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)