import tkinter as tk import numpy as np from PIL import Image, ImageTk array_t = np.ndarray class soma_validation_window_t: def __init__(self, lmap: array_t, mip_axis: int = -1): """""" self.lmap = lmap self.mip = np.max(lmap, axis=mip_axis) mip_shape = self.mip.shape offset = 50 scaling = (255.0 - offset) / np.max(self.mip) self.scaled_mip = scaling * self.mip + offset self.scaled_mip[self.mip == 0] = 0 self.root = tk.Tk() self.canvas = tk.Canvas( self.root, width=mip_shape[1], height=mip_shape[0] ) self.tk_image = ImageTk.PhotoImage( master=self.root, image=Image.fromarray(self.scaled_mip) ) self.canvas_image = self.canvas.create_image( 0, 0, anchor="nw", image=self.tk_image ) self.canvas.bind("<Button-1>", self._DeleteSoma) self.canvas.pack() def LaunchInteraction(self) -> None: """""" self.root.mainloop() # scikit-image.relabel(self.lmap) def _DeleteSoma(self, event) -> None: """""" row = event.y col = event.x value = self.mip[row, col] if value > 0: self.lmap[self.lmap == value] = 0 soma_bmap = self.mip == value self.mip[soma_bmap] = 0 self.scaled_mip[soma_bmap] = 0 self.tk_image = ImageTk.PhotoImage( master=self.root, image=Image.fromarray(self.scaled_mip) ) self.canvas.itemconfig(self.canvas_image, image=self.tk_image)