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
rx.checkboxOffizielle 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
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)| Prop | Werte | Standard | Verwendung |
|---|---|---|---|
Erstes Argument (text) | String | "" | Label daneben |
checked | True / False / Var | keiner | Gesteuerter Wert (zusammen mit on_change) |
default_checked | True / False | False | Wert, 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_contrast | Radix-Farbname / True | Theme-Wert | Farbe im angehakten Zustand und Kontrast |
spacing | "0" bis "9" | "2" | Abstand zwischen Kästchen und Label |
disabled, required | True / False | False | Sperren; muss angehakt sein, um abzusenden |
name, value | String | keiner / "on" | Name und Wert beim Absenden eines Formulars |
on_change | Event | Wenn sich der Haken ändert. Übergibt True/False |
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.
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),
)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"),
),
)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 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())),
),
)Ü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.
Über neue Lektionen informiert werden
Wir schicken dir eine E-Mail, wenn dieser Kurs neue Lektionen bekommt oder ein Folgekurs erscheint.
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© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
Fragen & Antworten
Frag alles zu dieser Lektion. Fragen aus allen Sprachversionen dieser Seite erscheinen hier gemeinsam.