One of the reasons for having show=False is that, when constructing a GUI, we don't want to have a window appear for each Canvas before it is placed inside the main window. This is particularly problematic when using Qt Designer, because you don't have the option to specify show=False there.