If you develop web applications, there are a lot of things that you find yourself doing over and over and over again. If you are any good at your job, you don't want to write the same code over and over again with only small differences. Instead, you want to move that stuff out into separate functions, or even separate reusable packages. That's what TurboGears widgets are all about.
Widgets are particularly useful when you want to define reusable elements with complex display logic. Probably the most common web task that widgets are used for is form generation and display. So, the widgets package is integrated in with Form Encode, which helps validate form data and translate form data into valid Python objects.