The general mistake you're making, is that you are not letting the layouts do the work for you.
To start with, make sure the label is added to the top of the vertical layout:
lbl1 = QtGui.QLabel('This will eventually contain a paragraph of useful information', self)
# get rid of the following line
# lbl1.move(17, 0)
self.horizontalLayout.addWidget(lbl1)
and possibly also allow the label to wrap, so that the main window is fully resizable:
lbl1.setWordWrap(True)
You should also get rid of all the setGeometry
calls, other than the one for the main window itself. In general, avoid using absolute sizes and positions for widgets; the layout machinery will almost always do the right thing if it's used in the right way.
One final tip: avoid using the old-style syntax for connecting signals, and switch to the new-style syntax (which is more readable and much less error-prone):
# self.connect(self.btn1, QtCore.SIGNAL("clicked()"), self.addButtons)
self.btn1.clicked.connect(self.addButtons)