我有一个带有两个标签和一个删除按钮的自定义项目,单击该按钮后我将其删除。但不确定这是否是正确的方法。但清单仍然占据相同的位置。如何正确执行此操作并删除该项目。
波纹管功能来自自定义列表项。
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)
这是当前结果。
在使用链接的问题中的指导之后。
@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()失败