Hey David,
Actually your parenting should be working just fine either way. The problem you are seeing is that because the widgets are not in any kind of layout, they end up being positioned at (0,0) of their parent... on top of each other. The last one you created will be on top.
Try adding this line to the end of your code, and you should end up seeing both of them:
button2.move(0, button2.height())
If you want to see the effect of a layout, you can add this to the end of your code:
vlayout = QtGui.QVBoxLayout(widget)
vlayout.addWidget(button)
vlayout.addWidget(button2)
-- justin