in reply to Tk fontCreate, fontNames errors (and fontDelete seems messy)
When you allocate a new Tk::Font object it makes the newly defined font available to all children of the MainWindow (even if invoked against a child widget, the font is visible to the child's siblings).
You could invoke fontCreate against your MainWindow object reference (i.e. $mw->fontCreate(...);) before calling MainLoop and then use the font when configuring your Toplevel and its child widgets. There's no need to invoke fontCreate more than once.
If you post the relevant bits of your code it should be possible to give more direct advice.