Episode 80: Make Your Python App Interactive With a Text User Interface (TUI)
Oct 01, 2021 1h 2m
Have you wanted to create a Python application that goes further than a command-line interface? You would like it to have a friendly interface but don’t want to make a GUI (Graphical User Interface) or web application. Maybe a TUI (Text User Interface)would be a perfect fit for the project. This week on the show, we have Will McGugan to talk about his projects Textual and Rich.
Rich is a Python library for writing rich text to the terminal with color and style. It’s a great tool if you want to display advanced content such as tables, markdown, and syntax-highlighted code. We talk about how Will started on the project and how it’s developed over the years.
We also talk about Will’s new project Textual, a TUI using much of Rich at its core. He shares how the project is coming along and what are challenges in developing this type of application. We discuss how a TUI has more in common with CSS and web development than command line or graphical interfaces.
We also have a quick announcement at the top of the show from CPython Developer in Residence Łukasz Langa about next week’s release of Python 3.10.
Course Spotlight: Rock, Paper, Scissors With Python: A Command Line Game
In this course, you’ll learn to program rock paper scissors in Python from scratch. You’ll learn how to take in user input, make the computer choose a random action, determine a winner, and split your code into functions.
- 00:00:00 – Introduction
- 00:02:08 – Python 3.10 Release Party - Announcement
- 00:03:32 – Will McGugan and the background of the Rich library
- 00:10:11 – Moya framework
- 00:21:38 – Sponsor: DataStax Astra DB
- 00:22:10 – The spark that started Textual
- 00:26:31 – Needing AsyncIO for a TUI
- 00:28:07 – Describing a TUI (Text User Interface)
- 00:33:57 – Scrolling, resizing, and similarities with CSS
- 00:36:37 – Video Course Spotlight
- 00:38:03 – What areas were difficult in developing Textual?
- 00:39:42 – Similarities to game development
- 00:41:47 – Testing across different terminals
- 00:45:01 – What were you excited to include in the project?
- 00:47:04 – Are there particular uses you foresee for Textual?
- 00:49:21 – Career changes and open source reviewing
- 00:54:21 – Version numbers and Textual
- 00:55:49 – What are you excited about in the world of Python?
- 00:58:27 – What do you want to learn next?
- 01:00:57 – Shoutouts and plugs
- 01:01:47 – Thanks and goodbye
- Will McGugan’s Blog
- Will McGugan’s GitHub
- Rich Documentation
- Pygments: Python Syntax Highlighter
object.__repr__ (self): Python docs
- Regular Expressions: Regexes in Python (Part 1) - Real Python
- Moya: Open source web development platform built with Python
- Building Rich terminal dashboards: Will’s blog
- Textual: A TUI (Text User Interface) framework for Python inspired by modern web development
- The 2021 Python Language Summit: Making CPython Faster
- Episode 69: Planning a Faster Future at the Python Language Summit
- Python 3.10 Release Party Announcement
- Łukasz Langa’s twitter: Developer in Residence
- Pablo Galindo Salgado’s twitter: Python 3.10 and 3.11 release manager
- Will McGugan’s Twitter
- Why I’m working on Open Source full time