Creating horizontal and vertically scrolling table inside a terminal application using Python Urwid / NCurses

I want to create a terminal application that displays a table with a lot of columns and rows (without setting the width and height on a normal screen).
The user must be able to scroll the table horizontally and vertically (and the rows must be selected), so it behaves like an htop.

I couldn't find a clue on how to create such a widget with urwid, most of the examples wrap text and don't allow horizontal scrolling.

What are the visible widgets / containers I should be using to implement this behavior? Any good example that does something like this? I am fine using the latest version of Urwid

EDIT : Since urwid doesn't provide horizontally scrolling lists, can I at least create this kind of functionality with Python-ncurses?


source to share

2 answers

Ncurses has the concept of "pad". The pad is like a window, but it can be larger than the screen. Then you can display a small portion of the pad on the screen. see python documentation curses.newpad .

However, since the overlay is a low level design, you will need to collect all the display and navigation elements around it.



Python-urwid doesn't support horizontally scrolling ListBoxes (the afike I need), this is the relevant ticket:



All Articles