Any widget that isn't shown will not appear on the screen. If you want to show all the widgets in a container, it's easier to call Widget.ShowAll on the container, instead of individually showing the widgets.
Remember that you have to show the containers containing a widget, in addition to the widget itself, before it will appear onscreen. And that when a toplevel container is shown, it is immediately realized and mapped; other shown widgets are realized and mapped when their toplevel container is realized and mapped.