pyqt- how to create clicked signal for QLabel class?
سؤال
i've created a image button class from QLabel. Now i wanna add a clicked signal to that. now, what to do?
class PicButton(QLabel):
def __init__(self,pixmap1,pixmap2,parent=None):
QLabel.__init__(self, parent)
self.pic = pixmap1
imageSize = self.pic.size()
imageSize.setWidth(imageSize.width()*.7)
imageSize.setHeight(imageSize.height()*.7)
self.pic = self.pic.scaled(imageSize,Qt.KeepAspectRatioByExpanding)
self.pic2 = pixmap2
imageSize2 = self.pic2.size()
imageSize2.setWidth(imageSize2.width()*.7)
imageSize2.setHeight(imageSize2.height()*.7)
self.pic2 = self.pic2.scaled(imageSize2,Qt.KeepAspectRatioByExpanding)
def enterEvent(self, event):
self.setPixmap(self.pic2)
event.accept()
def leaveEvent(self, event):
""" When the mouse leave this widget, destroy it. """
self.setPixmap(self.pic)
self.destroy()
i make a button :
ImageButton2 = PicButton(QPixmap("image/buy.png"),QPixmap("image/buy_Hover.png"))
ImageButton2.clicked.connect(self.addStuff) # but this class has not clicked signal
المحلول
QLabels have no default clicked
signal. If you want to have one, you must add it yourself and emit it on the correct event.
To dectect the event you can:
- override one or more of
- QLabel.mouseDoubleClickEvent
- QLabel.mousePressEvent
- QLabel.mouseReleaseEvent
- install an event filter
- Override QLabel.event
لا تنتمي إلى StackOverflow