The next series of notebooks presents three ways of handling widget events. In each of the notebooks we'll construct the same simple password generator.
The first uses a mix of functions and global variables, and approach like that in the notebook introducing widget events.
The second separates the logic of the password generation from the password generation user interface.
The third takes that separation a step further by using a class for the user interface, a class for the logic, and a class to bring them together.