R

ReflexKR

Reflex-Dokumentation

Die Komponentenwerkstatt: Reflex' 100 Bibliotheksbausteine

·

Kursüberblick

Layout

·

Box

·

Flex

·

Stack

·

Grid

·

Container

·

Section

·

Center

·

Spacer

·

Separator

·

Card

·

Inset

·

Aspect Ratio

·

Fragment

Typografie

·

Text

·

Heading

·

Link

·

Code

·

Markdown

·

Blockquote

·

Quote

·

Strong

·

Em

·

Kbd

Formulare

·

Button

·

Input

·

Text Area

·

Checkbox

·

Switch

·

Radio Group

·

Select

·

Slider

·

Form

·

Upload

Datenanzeige

·

Badge

·

Avatar

·

Icon

·

Callout

·

List

·

Data List

·

Code Block

·

Progress

·

Spinner

·

Scroll Area

·

Moment

Auf- und Zuklappen

·

Tabs

·

Accordion

·

Segmented Control

Overlays

·

Tooltip

·

Popover

·

Hover Card

·

Dialog

·

Alert Dialog

·

Drawer

·

Dropdown Menu

·

Context Menu

·

Toast

Dynamisches Rendern

·

Cond

·

Match

·

Foreach

·

Auto Scroll

Medien

·

Image

·

Audio

·

Video

Tabellen und Datengrids

·

Table

·

Data Table

·

Data Editor

Diagramme

·

Area Chart

·

Bar Chart

·

Line Chart

·

Composed Chart

·

Pie Chart

·

Radar Chart

·

Radial Bar Chart

·

Scatter Chart

·

Funnel Chart

·

Treemap

·

Sankey Chart

·

Error Bar

Diagrammbausteine

·

Axis

·

Cartesian Grid

·

Chart Tooltip

·

Legend

·

Label

·

Reference

·

Brush

Andere Diagrammbibliotheken

·

Plotly

·

Pyplot

HTML-Elemente

·

HTML

·

HTML Text

·

HTML Layout

·

HTML Forms

·

HTML Media

·

HTML Tables

·

SVG

Weitere Werkzeuge

·

Theme

·

Skeleton

·

Clipboard

·

Html Embed

·

Script

·

Memo

Die Komponentenwerkstatt: Reflex' 100 Bibliotheksbausteine
Formulare

Checkbox

rx.checkbox

Offizielle Doku

Werkstattauftrag

Bitte setz auf der Registrierungsseite eine Checkbox „AGB akzeptieren“ ein. Solange sie nicht angehakt ist, darf man den Registrieren-Button nicht drücken können.

rx.checkbox nimmt einen einzelnen An/Aus-Wert entgegen. Du nimmst sie für Ja/Nein-Fragen wie AGB-Zustimmung, „Nicht mehr anzeigen“ oder die Mehrfachauswahl in einer Liste. Gibst du als erstes Argument einen Text, steht daneben ein Label, und auch ein Klick aufs Label hakt an.

rx.checkbox("Basic Checkbox")

Props ausprobieren

Props ausprobieren

text

size

variant

color

spacing

high_contrast

disabled

rx.checkbox("Remember me", size="2", variant="surface", color_scheme="indigo", spacing="2", high_contrast=False, disabled=False)
size ändert Kästchen und Labeltext zugleich, spacing ist der Abstand zwischen Kästchen und Label.
PropWerteStandardVerwendung
Erstes Argument (text)String""Label daneben
checkedTrue / False / VarkeinerGesteuerter Wert (zusammen mit on_change)
default_checkedTrue / FalseFalseWert, der nur einmal am Anfang gesetzt wird (ungesteuert)
size"1" bis "3""2"Größe von Kästchen und Label
variant"classic" "surface" "soft""surface"Aussehen
color_scheme, high_contrastRadix-Farbname / TrueTheme-WertFarbe im angehakten Zustand und Kontrast
spacing"0" bis "9""2"Abstand zwischen Kästchen und Label
disabled, requiredTrue / FalseFalseSperren; muss angehakt sein, um abzusenden
name, valueStringkeiner / "on"Name und Wert beim Absenden eines Formulars
on_changeEventWenn sich der Haken ändert. Übergibt True/False

Wert per on_change empfangen

Bei jedem Klick übergibt on_change den neuen Wert (True oder False). Hier ist kein checked gesetzt, also hält der Browser den Zustand des Kästchens, und der State notiert den Wert nur.

false

class CheckboxBasicState(rx.State):
    checked: bool = False

    @rx.event
    def set_checked(self, value: bool):
        self.checked = value


rx.vstack(
    rx.heading(CheckboxBasicState.checked.to_string(), size="5"),
    rx.checkbox("Click me", on_change=CheckboxBasicState.set_checked),
)

Gesteuerte Checkbox: checked + on_change

Gibst du checked einen State-Wert, zeigt das Kästchen immer diesen Wert. Klickt jemand, korrigiert on_change den State, und ändern ein Button oder eine andere Checkbox den State, zieht das Kästchen mit. Der Fließtext der offiziellen Doku nennt das die Prop input, in 0.10 heißt sie aber checked.

class CheckboxControlState(rx.State):
    apples: bool = True
    pears: bool = False

    @rx.event
    def set_apples(self, value: bool):
        self.apples = value

    @rx.event
    def set_pears(self, value: bool):
        self.pears = value

    @rx.event
    def set_all(self, value: bool):
        self.apples = value
        self.pears = value


rx.vstack(
    rx.checkbox(
        "All fruits",
        checked=CheckboxControlState.apples & CheckboxControlState.pears,
        on_change=CheckboxControlState.set_all,
    ),
    rx.checkbox("Apples", checked=CheckboxControlState.apples, on_change=CheckboxControlState.set_apples, margin_left="1.5em"),
    rx.checkbox("Pears", checked=CheckboxControlState.pears, on_change=CheckboxControlState.set_pears, margin_left="1.5em"),
    rx.hstack(
        rx.button("Check all", on_click=CheckboxControlState.set_all(True), size="1", variant="soft"),
        rx.button("Clear", on_click=CheckboxControlState.set_all(False), size="1", variant="soft", color_scheme="gray"),
    ),
)

Anfangswert und deaktiviert

Brauchst du keinen State und willst nur den Anfangszustand festlegen, nimm default_checked (ungesteuert). Mit disabled=True lässt sich nichts anklicken.

rx.flex(
    rx.checkbox("Starts checked", default_checked=True),
    rx.checkbox("Starts empty"),
    rx.checkbox("Locked on", default_checked=True, disabled=True),
    spacing="4",
    wrap="wrap",
)

Im Formular

Im Formular wird name zum Schlüssel der gesendeten Daten. Nur angehakte Kästchen kommen als "on" (oder mit dem per value gesetzten Wert) an; nicht angehakte fehlen ganz. Im Handler liest du daher etwa form_data.get("news"). Ein Kästchen mit required=True muss angehakt sein, damit das Formular abgeschickt wird.

Das Formularbeispiel der offiziellen Doku übergibt den Text per label=, in 0.10 ist das Label von rx.checkbox aber das erste Argument (text).

Results:

{}
class CheckboxFormState(rx.State):
    form_data: dict = {}

    @rx.event
    def handle_submit(self, form_data: dict):
        self.form_data = form_data


rx.card(
    rx.vstack(
        rx.form.root(
            rx.vstack(
                rx.checkbox("Accept terms and conditions", name="terms", required=True),
                rx.checkbox("Send me news", name="news", value="yes"),
                rx.button("Submit", type="submit"),
            ),
            on_submit=CheckboxFormState.handle_submit,
            reset_on_submit=True,
        ),
        rx.divider(),
        rx.hstack(rx.text("Results:", weight="bold"), rx.badge(CheckboxFormState.form_data.to_string())),
    ),
)

Auftrag erledigt

Über checked hält der State die Zustimmung, und der Registrieren-Button ist mit disabled=~CheckboxSignupState.agreed gesperrt, bis zugestimmt wurde. ~ ist die Verneinung (not) einer Var.

class CheckboxSignupState(rx.State):
    agreed: bool = False
    done: bool = False

    @rx.event
    def set_agreed(self, value: bool):
        self.agreed = value
        self.done = False

    @rx.event
    def sign_up(self):
        self.done = True


rx.card(
    rx.vstack(
        rx.checkbox(
            "I agree to the Terms of Service",
            checked=CheckboxSignupState.agreed,
            on_change=CheckboxSignupState.set_agreed,
        ),
        rx.button("Sign up", on_click=CheckboxSignupState.sign_up, disabled=~CheckboxSignupState.agreed),
        rx.cond(CheckboxSignupState.done, rx.badge("Welcome aboard!", color_scheme="green")),
        spacing="3",
    ),
)

Werkstattnotizen

  • Mit rx.checkbox("Label") anlegen; on_change übergibt True/False.

  • Gesteuert mit checked + on_change, nur Anfangswert mit default_checked.

  • Im Formular kommen nur angehakte Kästchen als name: "on" (oder value) an. Fehlende Schlüssel mit .get() lesen.

  • Aussehen über size · variant · color_scheme · spacing, Absendebedingung mit required.

← Zurück

Formulare · Text Area

Weiter →

Formulare · Switch

Über neue Lektionen informiert werden

Wir schicken dir eine E-Mail, wenn dieser Kurs neue Lektionen bekommt oder ein Folgekurs erscheint.

Erhoben: deine E-Mail-Adresse · Zweck: Hinweise auf neue Lektionen oder den Start dieses Kurses · Speicherdauer: bis du die Löschung verlangst. Keine andere Nutzung, keine Weitergabe. Antworte einfach auf eine Benachrichtigung, dann löschen wir sie sofort.

Fragen & Antworten

Frag alles zu dieser Lektion. Fragen aus allen Sprachversionen dieser Seite erscheinen hier gemeinsam.

Wird als reiner Text angezeigt, ohne Links oder Formatierung.

R

ReflexKR

Python und Reflex zum Anfassen. Alle Beispiele wurden mit Reflex 0.10.0 ausgeführt und geprüft.

ReflexKR ist kostenlos und ohne Werbebanner. Wenn es dir geholfen hat, kannst du es mit einem Kaffee unterstützen. ☕ Spendier uns einen Kaffee

Hinweis zu Affiliate-Links
한국어English日本語简体中文EspañolDeutsch

© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0

Built with Reflex