Skip to content

Multiple choice

Multiple Choice Widget for Marimo

MultipleChoiceWidget

Bases: BaseWidget

A multiple choice question widget.

Attributes:

Name Type Description
question str

The question text to display

options list

List of answer options

correct_answer int

Index of the correct answer (0-based)

explanation str

Optional explanation text shown after answering

value dict

Current state with 'selected', 'correct', and 'answered' keys

Source code in src/marimo_learn/multiple_choice.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class MultipleChoiceWidget(BaseWidget):
    """
    A multiple choice question widget.

    Attributes:
        question (str): The question text to display
        options (list): List of answer options
        correct_answer (int): Index of the correct answer (0-based)
        explanation (str): Optional explanation text shown after answering
        value (dict): Current state with 'selected', 'correct', and 'answered' keys
    """

    _esm = Path(__file__).parent / "static" / "multiple-choice.js"

    question = traitlets.Unicode("").tag(sync=True)
    options = traitlets.List(trait=traitlets.Unicode()).tag(sync=True)
    correct_answer = traitlets.Int(0).tag(sync=True)
    explanation = traitlets.Unicode("").tag(sync=True)

    def __init__(
        self,
        question: str,
        options: list[str],
        correct_answer: int,
        explanation: str = "",
        lang: str = "en",
        **kwargs,
    ):
        super().__init__(
            question=question,
            options=options,
            correct_answer=correct_answer,
            explanation=explanation,
            lang=lang,
            **kwargs,
        )

Example

multiple choice