Genro Textual

Start Here

  • Getting Started
    • Installation
    • Your First App
    • Adding Data Binding
    • Adding CSS
    • Using the CLI
    • Next Steps

Guide

  • Building the UI
    • Basic Structure
    • Containers and Layout
    • Widgets
    • CSS
    • Key Bindings
    • Style Attributes
    • Components
    • Tabs
    • DataTable
    • Tree with Store
  • Data Binding
    • Read Binding (Data → Widget)
    • Write Binding (Widget → Data)
    • Anti-Loop
    • Subscription Map
    • CSS Property Binding
    • Setup Order
  • CSS and Styles
    • Inline CSS
    • Direct Style Attributes
    • Bindable Styles
    • Supported CSS Properties
    • Classes and IDs
  • Widgets
    • Containers
    • Input Widgets
    • Display Widgets
    • Complex Widgets
    • App Widgets
    • Components
    • Config (Non-Widget)
    • Tree with Store
  • Inspector
    • Using app_shell
    • Opening the Inspector
    • Inspector Layout
    • Three Tabs
    • Resizing
    • Store Parameters
  • CLI — pygui
    • Commands
      • Run
      • List
      • Connect
      • Stop
      • Completions
    • Tmux Integration
    • Remote REPL

Architecture

  • Architecture
    • Puppeteer and Puppet
    • Pipeline
      • Single-Pass Build
      • Subscription Map
    • Modules
      • textual_builder.py
      • textual_compiler.py
      • textual_app.py
    • Data Binding
      • Data to Widget (^pointer)
      • Widget to Data (bidirectional)
      • Anti-Loop via _reason
    • Store (Bag-driven Widgets)
    • System Data
    • Extending the Builder

Reference

  • API Reference
    • TextualApp
      • TextualApp
        • TextualApp.__init__()
        • TextualApp.page
        • TextualApp.source
        • TextualApp.data
        • TextualApp.compiled
        • TextualApp.as_textual_app()
        • TextualApp.run()
    • TextualBuilder
      • TextualBuilder
    • TextualCompiler
      • TextualCompiler
        • TextualCompiler.__init__()
        • TextualCompiler.widget_counter
        • TextualCompiler.compile()
    • LiveApp
      • LiveApp
        • LiveApp.BINDINGS
        • LiveApp.__init__()
        • LiveApp.compose()
        • LiveApp.on_mount()
        • LiveApp.on_button_pressed()
        • LiveApp.on_key()
        • LiveApp.on_descendant_blur()
        • LiveApp.on_input_changed()
        • LiveApp.on_checkbox_changed()
        • LiveApp.on_switch_changed()
  • Widgets Reference
    • Builder Schema
      • TextualWidgetsMixin
        • TextualWidgetsMixin.container()
        • TextualWidgetsMixin.vertical()
        • TextualWidgetsMixin.horizontal()
        • TextualWidgetsMixin.center()
        • TextualWidgetsMixin.middle()
        • TextualWidgetsMixin.centermiddle()
        • TextualWidgetsMixin.right()
        • TextualWidgetsMixin.grid()
        • TextualWidgetsMixin.verticalscroll()
        • TextualWidgetsMixin.horizontalscroll()
        • TextualWidgetsMixin.scrollablecontainer()
        • TextualWidgetsMixin.verticalgroup()
        • TextualWidgetsMixin.horizontalgroup()
        • TextualWidgetsMixin.itemgrid()
        • TextualWidgetsMixin.button()
        • TextualWidgetsMixin.checkbox()
        • TextualWidgetsMixin.collapsible()
        • TextualWidgetsMixin.collapsibletitle()
        • TextualWidgetsMixin.contentswitcher()
        • TextualWidgetsMixin.datatable()
        • TextualWidgetsMixin.column()
        • TextualWidgetsMixin.row()
        • TextualWidgetsMixin.digits()
        • TextualWidgetsMixin.directorytree()
        • TextualWidgetsMixin.footer()
        • TextualWidgetsMixin.header()
        • TextualWidgetsMixin.helppanel()
        • TextualWidgetsMixin.input()
        • TextualWidgetsMixin.keypanel()
        • TextualWidgetsMixin.label()
        • TextualWidgetsMixin.link()
        • TextualWidgetsMixin.listitem()
        • TextualWidgetsMixin.listview()
        • TextualWidgetsMixin.loadingindicator()
        • TextualWidgetsMixin.log()
        • TextualWidgetsMixin.markdown()
        • TextualWidgetsMixin.markdownviewer()
        • TextualWidgetsMixin.maskedinput()
        • TextualWidgetsMixin.optionlist()
        • TextualWidgetsMixin.placeholder()
        • TextualWidgetsMixin.pretty()
        • TextualWidgetsMixin.progressbar()
        • TextualWidgetsMixin.radiobutton()
        • TextualWidgetsMixin.radioset()
        • TextualWidgetsMixin.richlog()
        • TextualWidgetsMixin.rule()
        • TextualWidgetsMixin.select()
        • TextualWidgetsMixin.selectionlist()
        • TextualWidgetsMixin.sparkline()
        • TextualWidgetsMixin.static()
        • TextualWidgetsMixin.switch()
        • TextualWidgetsMixin.tab()
        • TextualWidgetsMixin.tabpane()
        • TextualWidgetsMixin.tabbedcontent()
        • TextualWidgetsMixin.tabs()
        • TextualWidgetsMixin.textarea()
        • TextualWidgetsMixin.tooltip()
        • TextualWidgetsMixin.tree()
        • TextualWidgetsMixin.welcome()
        • TextualWidgetsMixin.css()
        • TextualWidgetsMixin.binding()
        • TextualWidgetsMixin.fieldset()
        • TextualWidgetsMixin.form()
Genro Textual
  • Overview: module code

All modules for which code is available

  • genro_builders.manager
  • genro_textual.textual_app
  • genro_textual.textual_builder
  • genro_textual.textual_compiler

© Copyright 2025, Softwell S.r.l..

Built with Sphinx using a theme provided by Read the Docs.