Files
textual/docs/guide/devtools.md
Will McGugan 9af8c8214a words
2022-08-14 16:24:33 +01:00

48 lines
1.9 KiB
Markdown

# Devtools
Textual comes with a command line application of the same name. The `textual` command is a super useful tool that will help you to build apps.
Take a moment to look through the available sub-commands. There will be even more helpful tools here in the future.
```bash
textual --help
```
## Run
You can run Textual apps with the `run` subcommand. If you supply a path to a Python file it will load and run the application.
```bash
textual run my_app.py
```
The `run` sub-command assumes you have a Application instance called `app` in the global scope of your Python file. If the application is called something different, you can specify it with a colon following the filename:
```
textual run my_app.py:alternative_app
```
!!! note
If the Python file contains a call to app.run() then you can launch the file as you normally would any other Python program. Running your app via `textual run` will give you access to a few Textual features such as dev mode which auto (re) loads your CSS if you change it.
## Console
When running any terminal application, you can no longer use `print` when debugging (or log to the console). This is because anything you write to standard output would typically overwrite application content, which generally makes an unreadable mess. Fortunately Textual supplies a debug console of it's own which has some super helpful features.
To use the console, open up 2 console emulators. In the first one, run the following:
```bash
textual console
```
In the other console, run your application using `textual run` and the `--dev` switch:
```bash
textual run my_app.py --dev
```
You should notice that the console will display information regarding the running application, such as events which are sent.
Anything you `print` from your application will be displayed in the console window. You can also call the `log()` method on App and Widget objects for advanced formatting. Try it with `self.log(self.tree)`.