6

I have qlabels that displaying images . I want to delete image if user clicks remove button . I can learn which image clicked

labels[i].mousePressEvent = functools.partial(self.remove_image, source_label = labels[i] ,source_image = pixmap)

but i couldn't use it and connects with button . How can i remove image ?

Cahit Yıldırım
  • 499
  • 1
  • 10
  • 26
  • Are these `QLabels` in a `listWidget`? – Iron Fist Dec 29 '15 at 23:59
  • @IronFist No , QLabels in Frame . Does it matter ? – Cahit Yıldırım Dec 30 '15 at 00:07
  • Okey...I was just thinking if these `QLabel`s where in a `listWidget` it would be easy to delete them by *selecting* the ones and deleting them at once. But in your case, you want to delete the image *clicked* by user, is it going to be deleting one image per click or multiple images at one click? – Iron Fist Dec 30 '15 at 00:10
  • Deleting One image per click . Above code examples i can get which QLabel clicked but i can't make connect with button click . – Cahit Yıldırım Dec 30 '15 at 00:15

1 Answers1

4

Assuming labels[] has a list of labels ID, I think you can do something like:

labels[i].mousePressEvent = functools.partial(self.remove_image, source_label = labels[i]) #just pass to self.remove_image the label id

Then in self.remove_image and since label.clear() (to clear content of label) is a SLOT then, you can connect it to clicked signal directly:

def remove_image(self, label_id):
    QtCore.QObject.connect(self.deleteButton, QtCore.SIGNAL("clicked()"), label_id.clear)
Iron Fist
  • 10,739
  • 2
  • 18
  • 34