Qt won't stretch your image for you - and it's best this way. I recommend to keep the pushbutton of a constant size by adding stretchers to the layout holding it. A resizable pushbutton isn't very appealing visually, and is uncommon in GUIs, anyway.
To make a clickable image, here's the simplest code I can think of:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class ImageLabel(QLabel):
def __init__(self, image, parent=None):
super(ImageLabel, self).__init__(parent)
self.setPixmap(image)
def mousePressEvent(self, event):
print 'I was pressed'
class AppForm(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.create_main_frame()
def create_main_frame(self):
name_label = QLabel("Here's a clickable image:")
img_label = ImageLabel(QPixmap('image.png'))
vbox = QVBoxLayout()
vbox.addWidget(name_label)
vbox.addWidget(img_label)
main_frame = QWidget()
main_frame.setLayout(vbox)
self.setCentralWidget(main_frame)
if __name__ == "__main__":
app = QApplication(sys.argv)
form = AppForm()
form.show()
app.exec_()
Just replace image.png
with your image filename (acceptable format by QPixmap) and you're set.