You'll have to handle the cropping/scaling yourself. Fortunately QPixmap makes this pretty easy - check out
QPixmap.copy() and
QPixmap.scaled(). If I understand you correctly, you probably want to do something like this:
pixmap = QtGui.QPixmap('/path/to/image.png')
# resize pixmap
pixmap = pixmap.scaled(button.size(),
QtCore.Qt.KeepAspectRatioByExpanding, QtCore
.Qt::SmoothTransformation)
# crop pixmap - the following assumes the image aspect is always wider than the button. if that's not the case
# you'll need to compare your image/button aspects and crop vertically/horizontally as necessary
cropOffsetX = (pixmap.width() - button.size().width()) / 2
pixmap = pixmap.copy(cropOffsetX, 0, button.size().width(), button.size().height())
button.setIcon(QtGui.QIcon(pixmap))