Registry / web-framework / textual

textual

JSON →
library8.2.8pypypi✓ verified 26d ago

Textual is a Python framework for building sophisticated user interfaces with a simple API. The current version is 8.2.0, released on March 27, 2026. It follows a regular release cadence, with updates approximately every few weeks.

pip install textual
INSTALL
IMPORT
SIG · TEXTUAL
T
textual
web-frameworkpythonv8.2.8
Install
3.8s avg
Import
682ms
Disk
37MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v8.2.8 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.724s · 37.9MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 3.8s · import 0.640s · 38MB
37MB installed
● package 37MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

App
from textual.app import App
Ensure correct import path to avoid ImportError

A minimal Textual application with a header, footer, and placeholder.

import os from textual.app import App from textual.widgets import Header, Footer, Placeholder class MyApp(App): async def on_mount(self) -> None: self.set_interval(1, self.update) async def update(self) -> None: pass async def on_resize(self, width: int, height: int) -> None: pass if __name__ == '__main__': app = MyApp() app.run()
textual --version
Debug
Known issues
breakingIn version 8.0.0, 'Select.BLANK' was renamed to 'Select.NULL' to avoid a name clash.
fix
Update code to use 'Select.NULL' instead of 'Select.BLANK'.
affects: 8.0.0
deprecatedThe 'App.PAUSE_GC_ON_SCROLL_' attribute is experimental and may be removed in future versions.
fix
Avoid using 'App.PAUSE_GC_ON_SCROLL_' in production code.
affects: 8.1.0
breakingThe `on_resize()` function or method signature has changed and now requires a 'height' argument.
fix
Update calls to `on_resize()` to include the `height` argument, or modify its definition to match the new signature if you are implementing it.
affects: unknown
breakingThe `MyApp.on_resize()` method is being called without a required 'height' argument.
fix
Update the signature of `MyApp.on_resize()` to accept a 'height' argument, or ensure it is called with the 'height' argument if the signature is already correct according to the expected API.
affects: 3.13.0
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'textual'
The 'textual' library is not installed in the current Python environment.
fix
pip install textual
ImportError: cannot import name 'Button' from 'textual'
Widgets like Button are located within the 'textual.widgets' submodule, not directly in the top-level 'textual' package.
fix
from textual.widgets import Button
TypeError: Button.__init__() missing 1 required positional argument: 'label'
The Button widget requires a string 'label' argument to be provided during its instantiation.
fix
Button('Click Me')
AttributeError: 'Button' object has no attribute 'on_click'
Textual uses a reactive event system where event handlers are defined as methods (e.g., 'on_button_pressed') in the App or Screen class, rather than being directly assigned to a widget attribute.
fix
Define a method in your App or Screen class: `def on_button_pressed(self, event: Button.Pressed): ...`
Upgrade
Version history
8.2.8latest on PyPI · released Jun 30, 2026
Audit
Dependencies
richrequiredProvides rich text and formatting capabilities for Textual
Agent activity
76 hits · last 30 days
node
66
Amazon
1
OpenAI (training)
1
Resources
textual — pip install textual · libregistry