Event Loops
Urwid's event loop classes handle waiting for things for the MainLoop. The different event loops allow you to integrate with Twisted or Glib libraries, or use a simple select-based loop. Event loop classes abstract the particulars of waiting for input and calling functions as a result of timeouts.
You will typically only have a single event loop in your application, even if you have more than one MainLoop running.
You can add your own files to watch to your event loop, with the watch_file() method. Using this interface gives you the special handling of ExitMainLoop and other exceptions when using Glib or Twisted.
SelectEventLoop
This event loop is based on select.select(). This is the default event loop created if none is passed to MainLoop.
TwistedEventLoop
This event loop uses Twisted's reactor. It has been set up to emulate SelectEventLoop's behaviour and will start the reactor and stop it on an error. This is not the standard way of using Twisted's reactor, so you may need to modify this behaviour for your application.
GlibEventLoop
This event loop uses Glib's event loop. This is useful if you are building an application that depends on DBus events, but don't want to base your application on Twisted.
