TagsListSelector

Introduction

Tags List Selector widget allows users to view a list of tag metas and change it dynamically using widget methods. This widget can be used for visualizing and selecting tags in Supervisely.

Function signature

tags_list_selector = TagsListSelector(
    tag_metas=tag_metas,
    multiple=False,
    empty_notification=None,
    widget_id=None
)

Parameters

ParametersTypeDescription

tag_metas

Union[List[TagMeta], TagMetaCollection]

Supervisely tag metas collection or list of tag metas

multiple

bool

Enable multiple tags selection

empty_notification

NotificationBox

Notification that will be displayed when there are no tags in widget

widget_id

str

ID of the widget

tag_metas

List of TagMeta objects or Supervisely object class collection (TagMetaCollection).

type: Union[List[TagMeta], TagMetaCollection]

tags_list_selector = TagsListSelector(
    tag_metas=tag_metas
)

multiple

If True then multiple tags can be selected. Otherwise, only one tag can be selected.

type: bool

default False

tags_list_selector = TagsListSelector(
    tag_metas=tag_metas,
    multiple=True
)

empty_notification

Notification that will be displayed when there are no tags in widget

type: NotificationBox

default None

notification_box = NotificationBox(title="No tags", description="Provide tags to the widget.")
tags_list_selector = TagsListSelector(
    tag_metas=tag_metas,
    empty_notification=notification_box,
)

widget_id

ID of the widget.

type: str

default value: None

Methods and attributes

Attributes and MethodsDescription

set()

Set tags to widget.

get_selected_tags()

Return list of selected tags.

select_all()

Select all tags.

deselect_all()

Deselect all tags.

select()

Select tags by names.

deselect()

Deselect tags by names.

set_multiple()

Set multiple flag.

get_all_tags()

Return list of all tags.

@selection_changed

Callback triggers when selection is changed.

Mini App Example

You can find this example in our Github repository:

supervisely-ecosystem/ui-widgets-demos/selection/017_tags_list_selector/src/main.py

Import libraries

import os
import supervisely as sly
from supervisely.app.widgets import Card, Container, TagsListSelector, Text, NotificationBox
from dotenv import load_dotenv

Init API client

First, we load environment variables with credentials and init API for communicating with Supervisely Instance:

load_dotenv("local.env")
load_dotenv(os.path.expanduser("~/supervisely.env"))

api = sly.Api()

Create list of tag metas

cat_tag_meta = sly.TagMeta("cat", sly.TagValueType.NONE)
dog_tag_meta = sly.TagMeta("dog", sly.TagValueType.ANY_NUMBER)
horse_tag_meta = sly.TagMeta("horse", sly.TagValueType.ANY_STRING)
cow_tag_meta = sly.TagMeta("cow", sly.TagValueType.ONEOF_STRING, possible_values=["moo", "mooo"])
zebra_tag_meta = sly.TagMeta("zebra", sly.TagValueType.NONE)
tag_metas = [
    cat_tag_meta,
    dog_tag_meta,
    horse_tag_meta,
    cow_tag_meta,
    zebra_tag_meta,
]

Initialize TagsListSelector widget, NotificationBox widget for custom notification and Text widget for displaying selected tags count

notification_box = NotificationBox(title="No tags", description="Provide tags to the widget.")
tags_list_selector = TagsListSelector(tag_metas, multiple=True, empty_notification=notification_box)
selected_tags_cnt = Text(f"Selected Tags: 0 / {len(tag_metas)}")

Create app layout

Prepare a layout for app using Card widget with the content parameter and place widget that we've just created into the Container widget.

container = Container(widgets=[selected_tags_cnt, tags_list_selector])

card = Card(
    title="Tags List Selector",
    content=container,
)

layout = card

Create app using layout

Create an app object with layout parameter.

app = sly.Application(layout=layout)

Add functions to control widgets from python code

@tags_list_selector.selection_changed
def on_selection_changed(selected_tags):
    selected_tags_cnt.set(f"Selected Tags: {len(selected_tags)} / {len(tag_metas)}", "text")

Last updated