如何从QListWidget正确删除自定义项目并刷新列表

时间:2019-04-06 04:54:17

标签: python user-interface pyqt pyqt5 listitem

我有一个带有两个标签和一个删除按钮的自定义项目,单击该按钮后我将其删除。但不确定这是否是正确的方法。但清单仍然占据相同的位置。如何正确执行此操作并删除该项目。

波纹管功能来自自定义列表项。

def initialize(self,name,item, list):
    self.label_2.setText(name)
    self.item = item
    self.parentList = list
    self.pushButton.clicked.connect(self.removeItem)


def removeItem(self):
    self.parentList.removeItemWidget(self.item)

使用初始化函数设置详细信息以及父列表及其QListWidgetItem。

下面的功能是主代码,它将项目添加到列表中。

def browse_files(self):
    files, _ = QtWidgets.QFileDialog.getOpenFileNames(None, "Select Images", "",
                                                     "Image Files (*.png *.jpg *jpeg *.bmp)")

    for fileName in files:
        item = QtWidgets.QListWidgetItem(self.ImageList)
        value = imageListItem.imageListItem()
        name = ntpath.basename(fileName)
        value.initialize(str(name),item,self.ImageList)
        item.setSizeHint(value.sizeHint())
        self.ImageList.addItem(item)
        self.ImageList.setItemWidget(item,value)

这是当前结果。

enter image description here

在使用链接的问题中的指导之后。

@QtCore.pyqtSlot()
def browse_files(self):
    files, _ = QtWidgets.QFileDialog.getOpenFileNames(None, "Select Images", "",
                                                     "Image Files (*.png *.jpg *jpeg *.bmp)")
    for fileName in files:
        item = QtWidgets.QListWidgetItem(self.ImageList)
        value = imageListItem.imageListItem()
        name = ntpath.basename(fileName)
        value.initialize(str(name),item,self.ImageList)
        value.clicked.connect(self.remove_item)
        item.setSizeHint(value.sizeHint())
        self.ImageList.addItem(item)
        self.ImageList.setItemWidget(item,value)
        self.inputImages.append([fileName,value])


@QtCore.pyqtSlot()
def remove_item(self):
    widget = self.sender()
    gp = widget.mapToGlobal(QtCore.QPoint())
    lp = self.ImageList.viewport().mapFromGlobal(gp)
    row = self.ImageList.row(self.ImageList.itemAt(lp))
    t_it = self.ImageList.takeItem(row)
    del t_it

self.BrowseBtn.clicked.connect(self.browse_files)

出现错误:

self.BrowseBtn.clicked.connect(self.browse_files)TypeError:在clicked(bool)和Browse_files()之间connect()失败

0 个答案:

没有答案