在ItemSelectedChanged()上获取当前项目QListWidget

卡兰

我收到错误消息:“ 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

为什么会出现此错误?

音乐家

问题是由于以下事实:选择项在删除时也会更改,因此会创建递归:

  1. 选择一个项目
  2. 信号发出了...
  3. 该函数称为
  4. 该功能删除项目
  5. 先前选择的项目不再存在,因此Qt尝试选择一个新项目
  6. 选择被更改,信号再次发出
  7. 返回3(因此递归)

删除选择更改中的项目是一个主意,绝不应该这样做。

一个可能的解决方案可能是断开信号之前删除的项目,但它不是一个很好的解决方案,我非常不鼓励你这样做; 在这种情况下,目的是尽量做到相似,拖拽,这应该事这样做,有两个重要原因:

  1. 拖动操作应始终使用鼠标事件(通常是mouseMoveEvent,但在某些情况下mouseButtonPress也是可能的),而不是选择;
  2. Qt为拖放提供了强大而可靠的支持,以任何其他方式以不同方式实现这些操作的尝试均被视为不好的做法,因为大多数情况下会导致意外的行为,错误或崩溃(在这种情况下);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HtmlBeginCollectionItem获取当前项目

来自分类Dev

Google Glass GDK:在CardScrollView上获取当前项目

来自分类Dev

从Python列表中获取当前项目

来自分类Dev

获取当前项目在视图挂钩?

来自分类Dev

如何在ASP.NET的Dropdownlist上获取当前项目

来自分类Dev

如何在ASP.NET的Dropdownlist上获取当前项目

来自分类Dev

AWS-在AWS Lambda上执行代码时获取当前项目路径

来自分类Dev

如何使用Java从Eclipse获取当前项目路径

来自分类Dev

敲除单击绑定如何获取“当前项目”的数组?

来自分类Dev

如何在Xamarin表单的ItemTemplate中获取当前项目

来自分类Dev

如何获取IntelliJ插件的当前项目目录

来自分类Dev

Django-如何在视图中获取当前项目

来自分类Dev

如何在 FragmentPagerAdapter 中获取当前项目?

来自分类Dev

在OWL Carousel上添加类当前项目

来自分类Dev

Roslyn:获取当前项目/获取所选的当前文档

来自分类Dev

如何从QListWidget获取当前选定的项目,而不是它记得的内容

来自分类Dev

使用新的测试运行器获取当前脚本路径或当前项目路径

来自分类Dev

将javscript上的空数组与当前数组合并,以删除当前项目

来自分类Dev

如何在sbt build.scala中获取当前项目名称

来自分类Dev

获取当前项目中的所有IDeclaredType-s(用于ReSharper Generator插件)

来自分类Dev

Doctrine2获取集合中当前项目的索引

来自分类Dev

如何从Firebase数据库获取当前项目根密钥

来自分类Dev

Doctrine2获取集合中当前项目的索引

来自分类Dev

从ColdFusion中的当前项目获取自定义属性?

来自分类Dev

如何在循环下的wordpress循环中获取当前项目?

来自分类Dev

您可以从分析器中获取当前项目吗?

来自分类Dev

当前项目的CSS内容属性

来自分类Dev

将当前项目传递给函数

来自分类Dev

jQuery addClass仅影响当前项目

Related 相关文章

  1. 1

    HtmlBeginCollectionItem获取当前项目

  2. 2

    Google Glass GDK:在CardScrollView上获取当前项目

  3. 3

    从Python列表中获取当前项目

  4. 4

    获取当前项目在视图挂钩?

  5. 5

    如何在ASP.NET的Dropdownlist上获取当前项目

  6. 6

    如何在ASP.NET的Dropdownlist上获取当前项目

  7. 7

    AWS-在AWS Lambda上执行代码时获取当前项目路径

  8. 8

    如何使用Java从Eclipse获取当前项目路径

  9. 9

    敲除单击绑定如何获取“当前项目”的数组?

  10. 10

    如何在Xamarin表单的ItemTemplate中获取当前项目

  11. 11

    如何获取IntelliJ插件的当前项目目录

  12. 12

    Django-如何在视图中获取当前项目

  13. 13

    如何在 FragmentPagerAdapter 中获取当前项目?

  14. 14

    在OWL Carousel上添加类当前项目

  15. 15

    Roslyn:获取当前项目/获取所选的当前文档

  16. 16

    如何从QListWidget获取当前选定的项目,而不是它记得的内容

  17. 17

    使用新的测试运行器获取当前脚本路径或当前项目路径

  18. 18

    将javscript上的空数组与当前数组合并,以删除当前项目

  19. 19

    如何在sbt build.scala中获取当前项目名称

  20. 20

    获取当前项目中的所有IDeclaredType-s(用于ReSharper Generator插件)

  21. 21

    Doctrine2获取集合中当前项目的索引

  22. 22

    如何从Firebase数据库获取当前项目根密钥

  23. 23

    Doctrine2获取集合中当前项目的索引

  24. 24

    从ColdFusion中的当前项目获取自定义属性?

  25. 25

    如何在循环下的wordpress循环中获取当前项目?

  26. 26

    您可以从分析器中获取当前项目吗?

  27. 27

    当前项目的CSS内容属性

  28. 28

    将当前项目传递给函数

  29. 29

    jQuery addClass仅影响当前项目

热门标签

归档