[Urwid] Rendering and caching

Ian Ward ian at excess.org
Fri Oct 26 10:28:59 EDT 2007


Aaron Gallagher wrote:
> How are rendered objects cached, and how does urwid know when to call 
> the render function? I've tried making my own widgets, but they only 
> seem to work if I call render functions from preexisting widgets; 
> returning my own canvases renders once, but never calls render again. I 
> would also like to know how can I force rerendering given an object?

Since release 0.9.8 all widgets cache the result of the render function:
http://excess.org/urwid/wiki/ChangeLog#Urwid0.9.8

If the result is in the cache then it will be returned instead of 
calling the actual render function.  If your widget has changed and will 
render differently then it should call self._invalidate() to clear its 
canvas from the cache.

You can also disable the cache for your widget by including 
"no_cache=['render']" in your class definition, but that will have a 
negative impact on performance.

> And is there any way to make text markup easier? Using lists of markup 
> lists is bothering me a bit.

I'm open to suggestions.  Would you prefer some type of escape codes in 
the text?

Ian




More information about the Urwid mailing list