【问题标题】:PyQt : Updating Custom List Widget Item in QListWidgetPyQt:更新 QListWidget 中的自定义列表小部件项
【发布时间】:2017-11-19 21:56:35
【问题描述】:

我能够使用以下代码在 QListWidget 中添加自定义 QListWidgetItem -

for item in dl_list:            
        widget = QtWidgets.QWidget()
        card = Ui_DownloadCard()
        card.setupUi(widget)
        card.set_filename(item["title"])
        card.set_progress_bar(item["progress"])
        card.set_progress_text(item["progress"]/item["size"])
        card.set_speed(item["speed"])

        listItem = QtWidgets.QListWidgetItem(self.download_list)
        listItem.setSizeHint(widget.sizeHint())

        self.myListWidget.addItem(listItem)
        self.myListWidget.setItemWidget(listItem, widget)

现在我希望以新的速度和进度更新每个项目。我尝试了以下代码 -

self.myListWidget.item(0).set_speed("300 KB/s")

但它给出了错误提示

AttributeError: 'QListWidgetItem' object has no attribute 'set_speed'

那么更新项目的正确方法是什么?

【问题讨论】:

标签: python pyqt qt5 pyqt5 qtwidgets


【解决方案1】:
listItem = QtWidgets.QListWidgetItem(self.download_list)

您需要改用您的自定义项目:

listItem = YourCustomListWidgetItem(self.download_list)

【讨论】:

    【解决方案2】:

    从规格: http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidget.html#setItemWidget

    QListWidget.setItemWidget

    这个函数应该只用于在列表小部件项的位置显示静态内容。如果要显示自定义动态内容或实现自定义编辑器小部件,请改用 QListView 和子类 QItemDelegate。

    因此,如果您想使用动态组件,则必须使用 QListView 和子类 QItemDelegate。

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2019-05-04
      • 2010-10-31
      • 2010-12-09
      • 2017-05-26
      • 2014-08-16
      相关资源
      最近更新 更多