Ждущий режим (одно изображение)
Клик (второе изображение/подсветка)
Растянуть изображение по размеру кнопки
from PyQt4.QtGui import * from PyQt4.QtCore import * class ExtendedQLabel(QLabel): def __init(self, parent): Label.__init__(self, parent) def mouseReleaseEvent(self, ev): self.emit(SIGNAL('clicked()')) # Часть скрипта с созданием кнопки self.button[key] = ExtendedQLabel(self) self.button[key].setMaximumSize(150,150) self.button[key].setPixmap(QPixmap(item[key].img)) self.connect(self.button[key], SIGNAL('clicked()'), functools.partial(use, [key,self.nameMenu]))
Осталось только как-то текст поверх всего вывести
Если использовать label - он перекрывает кнопку
from PyQt4.QtGui import * from PyQt4.QtCore import * import imageop, sys, os, random, codecs, functools, sip,time # Делает возможным создавить imagebutton class ExtendedQLabel(QLabel): def __init(self, parent): QLabel.__init__(self, parent) def mouseReleaseEvent(self, ev): self.emit(SIGNAL('clicked()')) class MainUI(QWidget): BUTTON_IMAGE = 'button1.png' def __init__(self, *args): apply(QWidget.__init__,(self, ) + args) QWidget.__init__(self) self.resize(300, 100) self.label = QLabel() self.initButton() def initButton(self): self.label.setText('Button') self.ImageButton = ExtendedQLabel(self) self.ImageButton.move(0,0) self.ImageButton.setPixmap(QPixmap(self.BUTTON_IMAGE)) self.ImageButton.connect(self.ImageButton, SIGNAL('clicked()'), self.buttonClicked) def buttonClicked(self): self.ImageButton.setPixmap(QPixmap('button2.png')) QApplication.processEvents() time.sleep(0.3) self.ImageButton.setPixmap(QPixmap('button1.png')) print('Button Clicked') if __name__ == '__main__': app = QApplication(sys.argv) win = MainUI() win.show() app.exec_() sys.exit()