Using the sample code, I was indeed able to get this to work using a sizer. It turns out that my problem was a threading issue; by creating the widgets and adding to the sizer in different thread, the hanging problem went away. Thanks to everyone who helped out!