Carousel
Introduction
Carousel
is a widget in Supervisely that allows loop a series of images or texts in a limited space on the UI.
Function signature
Carousel(
items: List[Carousel.Item],
height=150,
initial_index=0,
trigger="hover",
autoplay=True,
interval=3000,
indicator_position="none",
arrow="hover",
type=None,
widget_id=None,
)
Example of input data we will use.
# Example of local image
image_id = 22683828
static = os.path.join(sly.app.get_data_dir(), "static")
api.image.download_path(image_id, os.path.join(static, "image.jpg"))
items = [
Carousel.Item(name="Slide 1", label="https://www.w3schools.com/howto/img_nature.jpg"), # image by URL
Carousel.Item(name="Slide 2", label=f"{os.path.join('static', 'image.jpg')}"), # image from local directory
Carousel.Item(name="Slide 3", label="Lorem ipsum dolor sit amet", is_link=False), # text
Carousel.Item(name="Slide 4", label="https://www.quackit.com/pix/samples/18m.jpg"),
Carousel.Item(name="Slide 5", label="https://i.imgur.com/OpSj3JE.jpg"),
]
carousel = Carousel(items=items)
Parameters
items
List[Carousel.Item]
Input Carousel
data
height
int
Height of the Carousel
initial_index
int
Index of the initially active slide (starting from 0)
trigger
Literal["hover", "click"]
How indicators are triggered
autoplay
bool
Whether automatically loop the slides
interval
int
Interval of the auto loop, in milliseconds
indicator_position
Union[Literal["outside", "none"], None]
Position of the indicators
arrow
Literal["always", "hover", "never"]
When arrows are shown
type
Union[Literal["card"], None]
Type of the Carousel
widget_id
str
ID of the widget
items
Determine input Carousel
widget data.
type: List[Carousel.Item]
height
Determine height of the Carousel
widget.
type: int
default value: 350
carousel = Carousel(items=items, height=500)

initial_index
Index of the initially active slide (starting from 0).
type: int
default value: 0
trigger
Determine how indicators are triggered.
type: Literal["hover", "click"]
default value: "click"
autoplay
Determine whether automatically loop the slides.
type: bool
default value: False
interval
Determine interval of the auto loop, in milliseconds.
type: int
default value: 3000
carousel = Carousel(items=items, interval=1000)

indicator_position
Determine position of the indicators.
type: Literal["outside", "none"]
default value: "none"
carousel = Carousel(items=items, indicator_position="outside")

arrow
Determine when arrows are shown.
type: Literal["always", "hover", "never"]
default value: "hover"
carousel = Carousel(items=items, arrow="always")

type
Determine type of the Carousel
.
type: Union[Literal["card"], None]
default value: None
carousel = Carousel(items=items, type="card")

Methods and attributes
get_active_item()
Return Carousel
selected index.
get_items()
Return Carousel
items.
set_items(value: List[Carousel.Item])
Set Carousel
items.
add_items(value: List[Carousel.Item])
Add items in Carousel
.
set_height()
Set Carousel
height.
get_initial_index()
Return Carousel
initial_index
value.
set_initial_index()
Set Carousel
initial_index
value.
@value_changed
Decorator function to handle selected value change.
Mini App Example
You can find this example in our Github repository:
supervisely-ecosystem/ui-widgets-demos/media/012_carousel/src/main.py
Import libraries
import os
import supervisely as sly
from dotenv import load_dotenv
from supervisely.app.widgets import Card, Container, Carousel, Text
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()
Prepare items for cascader
You can use images from local directory or image URL.
image_id = 22683828
static = os.path.join(sly.app.get_data_dir(), "static")
api.image.download_path(image_id, os.path.join(static, "image.jpg"))
items = [
Carousel.Item(name="Slide 1", label="https://www.w3schools.com/howto/img_nature.jpg"),
Carousel.Item(name="Slide 2", label=f"{os.path.join('static', 'image.jpg')}"), # local images
Carousel.Item(name="Slide 3", label="Lorem ipsum dolor sit amet", is_link=False), # text
Carousel.Item(name="Slide 4", label="https://www.quackit.com/pix/samples/18m.jpg"),
Carousel.Item(name="Slide 5", label="https://i.imgur.com/OpSj3JE.jpg"),
]
Initialize Carousel
and Text
widgets
Carousel
and Text
widgetscarousel = Carousel(items=items, autoplay=False, trigger="click", height=500)
text = Text()
Create app layout
Prepare a layout for app using Card
widget with the content
parameter.
card = Card(
"Carousel",
content=Container([carousel, text]),
)
layout = Container(widgets=[card])
Create app using layout
Create an app object with layout parameter.
app = sly.Application(layout=layout, static_dir=static)
Add functions to control widgets from python code
@carousel.value_changed
def test(res):
info = f"Current slide index: {res}"
text.set(text=info, status="info")
Last updated
Was this helpful?