我收到错误消息:“ RecursionError:调用Python对象时超出了最大递归深度”
片段:
def makeLabel():
item = listWidget.currentItem() #RecursionError: maximum recursion depth exceeded while calling a Python object
rect = listWidget.visualItemRect(item)
itemPos = QPoint(rect.x(), rect.y())
imageSize = item.icon().actualSize(QSize(100, 200))
listWidget.takeItem(listWidget.currentRow())
label = MovableLabel(self, 'Pogba.jpg')
pixmap = item.icon().pixmap(imageSize)
label.setPixmap(pixmap)
label.setFixedSize(imageSize)
label.move(itemPos)
label.grabMouse()
label.oldPos = itemPos
label.clicked = False
label.show()
self.players = []
pixmap = QPixmap()
listWidget = QListWidget(self)
listWidget.setViewMode(QListWidget.IconMode)
listWidget.setFixedSize(500, 700)
listWidget.setIconSize(QSize(100, 200))
listWidget.setDragDropMode(listWidget.InternalMove)
listWidget.setFocusPolicy(Qt.NoFocus) #Why no work?
listWidget.itemSelectionChanged.connect(makeLabel)
self.listWidget = listWidget
为什么会出现此错误?
问题是由于以下事实:选择项在删除时也会更改,因此会创建递归:
删除选择更改中的项目是一个坏主意,绝不应该这样做。
一个可能的解决方案可能是断开信号之前删除的项目,但它不是一个很好的解决方案,我非常不鼓励你这样做; 在这种情况下,目的是尽量做到相似,拖拽,这应该事不这样做,有两个重要原因:
mouseMoveEvent
,但在某些情况下mouseButtonPress
也是可能的),而不是选择;本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句