Also see embedding xterm into a Tk app. If you are determined to use embeded Canvases, you could use this technique, to hide show them. Tk is somwhat limited and you need to cover the createWindow with another properly colored rectangle.
in reply to Re^3: How to destroy and re-create bound widgets
in thread How to destroy and re-create bound widgets
Tk::Zinc can actually hide or show the window. See the second example in Re: Window with background image and transparent listbox . You could put a second Zinc canvas in there, instead of an xterm.