Would another possibility be to subclass TopLevel? It would take on the added responsibility of keeping track of open Toplevels. It could have a class attribute list of open windows, which the user would have to update on return from the constructor. Or can the constructor add 'self' to the list, before the constructor returns? Additionally,perhaps there could be hooks to handle close box requests and keyboard close requests( e.g.: on Mac -'Command-w') so that the list could be updated when the user wants close the window.