def update_frame_labels_for_recog(self, frames=None): frames = frames or self.get_picked_frames_from_frame() if frames is not None: for f in frames: label = ttk.Label(self.pick_scrolledframe_innerframe) self.set_label_image(f, label) index = self.get_picked_frame_labels_for_recog_len() label.bind( "<Button-1>", lambda event, index=index: self.recog_frame_by_index(index ), ) label.pack( side="left", anchor="nw", padx=self.picked_frame_label_margin / 2, ) simpletooltip.create(label, _("Click to recognize.")) self.add_picked_frame_label_for_recog(label) self.set_picked_frames_without_update_widgets(frames) else: self.set_msg(_("Nothing picked.")) if self.is_test(): print(_("Picked frame is None.")) pass
def set_frame_labels_image_use_saved_frames(self, frames=None, for_read=False): if for_read: if not self.is_action_read(): print("`NOT` is_action_read.") return saved_frames = frames or self.get_saved_frames() if saved_frames is None: if self.is_test(): print(self.get_info_id(), _("Saved frames is None.")) return if self.is_test(): print("saved_frames_len", len(saved_frames)) for _id, f in saved_frames: if self.is_test(): print("`saved_frame.id`", _id) label = ttk.Label(self.pick_scrolledframe_innerframe) self.set_label_image(f, label) label.bind( "<Button-1>", lambda event, _id=_id: self.del_saved_frame_by_id(_id), ) label.pack( side="left", anchor="nw", padx=self.frame_label_margin / 2, ) simpletooltip.create(label, _("Saved frame, Click to delete.")) self.saved_frame_labels.append(label) pass
def set_labels_image_by_frames_return_labels(self, frames=None, parent_widget=None, label_func=None): assert frames is not None label_func = label_func or ( lambda: print("`set_labels_image_by_frames.label_func` is None.")) parent_widget = parent_widget or self.pick_scrolledframe_innerframe index = 0 labels = [] for f in frames: label = ttk.Label(parent_widget) self.set_label_image(f, label) label.bind( "<Button-1>", lambda event, _index=index: label_func(_index), ) label.pack( side="left", anchor="nw", padx=self.frame_label_margin / 2, ) simpletooltip.create(label, _("Saved frame, Click to delete.")) labels.append(label) return labels
def add_button(self, tabid, group, label, ttiplabel, image, callback): master = self._tabs[tabid].child_master() #master = self._tabs[tabid] b = ttk.Button(master, text=label, image=image, style='ComponentPalette.Toolbutton', command=callback, compound='top', takefocus=True) tooltip.create(b, ttiplabel) b.pack(side='left') self._buttons.append((b, group))
def create_accordion_widget_list(self, treelist): acf = AccordionFrame(self.widgetlist) acf.grid(sticky=tk.NSEW) acf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle) #Default widget image: default_image = '' try: default_image = StockImage.get('22x22-tk.default') except StockImageException as e: pass #Start building widget tree selector roots = {} sections = {} for key, wc in treelist: root, section = key.split('>') #insert root if root not in roots: roots[root] = acf.add_group(root, root) #insert section if key not in sections: sectionacf = AccordionFrame(roots[root]) sectionacf.grid(sticky=tk.NSEW, padx='5 0') sectionacf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle) sectiongrp = sectionacf.add_group(key, section) sections[key] = AutoArrangeFrame(sectiongrp) sections[key].grid(sticky=tk.NSEW) #insert widget w_image = default_image try: w_image = StockImage.get('22x22-{0}'.format(wc.classname)) except StockImageException as e: pass #define callback for button def create_cb(cname): return lambda: self.on_add_widget_event(cname) b = ttk.Button(sections[key], text=wc.label, image=w_image, style='Toolbutton', command=create_cb(wc.classname)) tooltip.create(b, wc.classname) b.grid() #Expand prefered widget set hidews = 'tk' prefws = get_option('widget_set') if hidews == prefws: hidews = 'ttk' acf.group_toogle(hidews) self.widgetlist_sf.reposition()
def set_frame_labels_image_use_picked_frames(self, frames=None, from_new_frame=False): """ Set frame label images using picked_frames Args: frames (Unit[int, numpy.array]): The video or image frame or the the `return` signal if `frames` is 0. """ if frames == 0: return if frames is None: frames = (self.get_picked_frames() or (from_new_frame and self.get_picked_frames_from_frame()) or None) if frames is not None: for f in frames: label = ttk.Label(self.pick_scrolledframe_innerframe, state="active") self.set_label_image(f, label) index = len(self.picked_frame_labels) label.bind( "<Button-1>", lambda event, index=index: self.del_picked_frame_by_index( index), ) label.pack( side="left", anchor="nw", padx=self.picked_frame_label_margin / 2, ) simpletooltip.create(label, _("Click to delete.")) self.picked_frame_labels.append(label) else: if self.is_test(): print(_("Picked frame is None."))
def set_widgets(self): super().set_widgets() self.set_frame_widget() self.saved_info_combobox = ttk.Combobox( self.root, textvariable=self.saved_info_combobox_var, values=self.get_saved_info_combobox_values(), justify="center", ) self.saved_info_combobox_var.trace( "w", self.saved_info_combobox_var_trace_w) self.pick_scrolledframe = ScrolledFrame(self.root, scrolltype="horizontal") self.pick_scrolledframe_innerframe = self.pick_scrolledframe.innerframe self.pick_scrolledframe_innerframe.configure( height=self.get_pick_scrolledframe_innerframe_height()) self.info_tip_label = ttk.Label( self.root, text=_("Write information in your strict format.")) self.basic_info_entry = tk.Entry(self.root, justify="center") simpletooltip.create(self.basic_info_entry, _("Write basic information here.")) self.info_text = tk.Text(self.root) simpletooltip.create(self.info_text, _("Write additional information here.")) self.save_button = ttk.Button(self.root, text=_("Save"), command=self.save_button_command) self.delete_button = tk.Button( self.root, text=_("Delete"), background="red", activebackground="red", command=self.delete_button_command, )
def configure_widget_list(self): acf = AccordionFrame(self.widgetlist) acf.grid(sticky=tk.NSEW) acf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle) root_tagset = set(('tk', 'ttk')) #create unique tag set tagset = set() for c in builder.CLASS_MAP.keys(): wc = builder.CLASS_MAP[c] tagset.update(wc.tags) tagset.difference_update(root_tagset) treelist = [] for c in builder.CLASS_MAP.keys(): wc = builder.CLASS_MAP[c] ctags = set(wc.tags) roots = (root_tagset & ctags) sections = (tagset & ctags) for r in roots: for s in sections: key = '{0}>{1}'.format(r,s) treelist.append((key, wc)) #sort tags by label def by_label(t): return "{0}{1}".format(t[0], t[1].label) treelist.sort(key=by_label) #Default widget image: default_image = '' try: default_image = StockImage.get('22x22-tk.default') except StockImageException as e: pass #Start building widget tree selector roots = {} sections = {} for key, wc in treelist: root, section = key.split('>') #insert root if root not in roots: roots[root] = acf.add_group(root, root) #insert section if key not in sections: sectionacf = AccordionFrame(roots[root]) sectionacf.grid(sticky=tk.NSEW, padx='5 0') sectionacf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle) sectiongrp = sectionacf.add_group(key, section) sections[key] = AutoArrangeFrame(sectiongrp) sections[key].grid(sticky=tk.NSEW) #insert widget w_image = default_image try: w_image = StockImage.get('22x22-{0}'.format(wc.classname)) except StockImageException as e: pass #define callback for button def create_cb(cname): return lambda: self.on_add_widget_event(cname) b = ttk.Button(sections[key], text=wc.label, image=w_image, style='Toolbutton', command=create_cb(wc.classname)) tooltip.create(b, wc.classname) b.grid() #hide tk widget by default acf.group_toogle('tk') self.widgetlist_sf.reposition()
def configure_widget_list(self): acf = AccordionFrame(self.widgetlist) acf.grid(sticky=tk.NSEW) acf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle) root_tagset = set(('tk', 'ttk')) #create unique tag set tagset = set() for c in builder.CLASS_MAP.keys(): wc = builder.CLASS_MAP[c] tagset.update(wc.tags) tagset.difference_update(root_tagset) treelist = [] for c in builder.CLASS_MAP.keys(): wc = builder.CLASS_MAP[c] ctags = set(wc.tags) roots = (root_tagset & ctags) sections = (tagset & ctags) for r in roots: for s in sections: key = '{0}>{1}'.format(r, s) treelist.append((key, wc)) #sort tags by label def by_label(t): return "{0}{1}".format(t[0], t[1].label) treelist.sort(key=by_label) #Default widget image: default_image = '' try: default_image = StockImage.get('22x22-tk.default') except StockImageException as e: pass #Start building widget tree selector roots = {} sections = {} for key, wc in treelist: root, section = key.split('>') #insert root if root not in roots: roots[root] = acf.add_group(root, root) #insert section if key not in sections: sectionacf = AccordionFrame(roots[root]) sectionacf.grid(sticky=tk.NSEW, padx='5 0') sectionacf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle) sectiongrp = sectionacf.add_group(key, section) sections[key] = AutoArrangeFrame(sectiongrp) sections[key].grid(sticky=tk.NSEW) #insert widget w_image = default_image try: w_image = StockImage.get('22x22-{0}'.format(wc.classname)) except StockImageException as e: pass #define callback for button def create_cb(cname): return lambda: self.on_add_widget_event(cname) b = ttk.Button(sections[key], text=wc.label, image=w_image, style='Toolbutton', command=create_cb(wc.classname)) tooltip.create(b, wc.classname) b.grid() #hide tk widget by default acf.group_toogle('tk') self.widgetlist_sf.reposition()