控制MousePressEvent在PyQ中返回的对象

2024-10-01 00:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多显示图像的qlabels。当单击这个qlabelsmousePressEvent返回单击的对象,我在另一个qlabel中用大大小。那么我可以使用qpushbutton删除图像。如果用户单击更多qlabels,然后单击qpushbutton,则所有图像都将被删除。我希望用户删除图像点击。所以我写了一个删除图片的方法,但是我不能控制用户是否点击了很多图片并删除了它们。我怎么能做到呢?在

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

def label_click(self, event,source_label=None, source_image=None):

        self.labelDisplayBigImage.setPixmap(source_image)
        self.labelDisplayBigImage.setScaledContents(True)

        if(source_label.picture() == self.labelDisplayBigImage.picture()):
            self.btnCancel.clicked.connect(source_label.clear)
            self.btnCancel.clicked.connect(self.labelDisplayBigImage.clear)

Tags: 用户图像imageselfnonesourcelabels图片
1条回答
网友
1楼 · 发布于 2024-10-01 00:34:24

您可以使用QListWidget()QListWidget的默认selectionMode()是单选。 将图像直接作为QIcon添加到listwidget,并设置适当的iconSize:

class MyList(QtWidgets.QListWidget):
    def __init__(self):
        QtWidgets.QListWidget.__init__(self)
        images = ['IMG_1.jpeg', 'IMG_2.jpeg', 'IMG_3.jpeg', 'IMG_4.jpeg', 'IMG_5.jpeg']       
        for i in images:
            icon = QtGui.QIcon(i)
            item = QtWidgets.QListWidgetItem(icon, i)  
            self.addItem(item)
        self.setIconSize(QtCore.QSize(150,100))
        self.setSelectionMode(1)            # 1 = SingleSelection, 2 = MultiSelection, not necessary, default mode is singleSelection
        self.setGeometry(200,200,300,500)

或将包含图像的标签添加到listwidget,则必须为该项指定适当的sizeHint:

^{pr2}$

连接到currentItemChanged信号以获取所选项目(cave:此信号发送2个项目,当前项目和上一个项目)

        self.currentItemChanged.connect(self.findSel)

    def findSel(self, current, previous):
        print(current.text())
        try:
            print(previous.text())
        except AttributeError:
            print('first selection, no previous item!') 

相关问题 更多 >