我有一个listWidget包含多个QListWidgetItem的,为了简单起见,我们假设每个都由一个和一个被调用QListWidgetItem的 组成。这是用以下代码组装的:QWidgetQPushButtondelete
class widgetItem(QtWidgets.QWidget):
def __init__(self, parent):
super(widgetItem, self).__init__()
uic.loadUi('UIfiles/trainingWidget.ui', self) # Load the .ui file
self.listWidgetItem = QtWidgets.QListWidgetItem()
self.listWidgetItem.setSizeHint(self.sizeHint())
self.delete.clicked.connect(self.deleteSelf)
parent.listWidget.addItem(self.listWidgetItem)
parent.listWidget.setItemWidget(self.listWidgetItem, self)
Run Code Online (Sandbox Code Playgroud)
这在主应用程序中被调用:
def additem(self):
self.referenceDict[self.itemID] = widgetItem(self)
Run Code Online (Sandbox Code Playgroud)
现在,我的目标是在按下按钮时从 referenceDict 和 listWidget 中删除这个特定的小部件。每个widgetItem也有自己的itemID作为字符串,并且可以访问listWidget以及referenceDict。我如何写这个deleteSelf?我尝试过使用self.deleteLater,但似乎它只删除了QWidget而不是删除了QListWidgetItem。调用self.listWidgetItem.deleteLater会引发属性错误,因为无法通过这种方式删除它。我也尝试过parent.referenceDict.pop(self.itemID),但由于某种原因,尽管当我打印字典时两个键都匹配,但它还是引发了一个键错误。