首页 文章

如何更新QListWidget

提问于
浏览
1

如何更新QLIstWidget以将项目显示为何时添加 .

就像我在循环中向QListWidget添加100个QListWidgetItems一样 . 所有这100个项目仅在循环完成后才可见 . 但我想知道是否可以显示项目以及何时添加项目 .

我试过 self.ListWidget.setUpdatesEnabled(True) 但没有运气 .

任何帮助表示赞赏 .

1 回答

  • 2

    你可以在循环中重新绘制listwidget:

    def insertItem(self):
        for i in range(1,100):
            self.listWidget.addItem(str(i))
            self.listWidget.repaint()
    

    使用QTimer,您可以控制2个项目之间的延迟 .

    编辑:也许我没有正确理解你的问题:你可以添加所有项目,隐藏它们然后逐项设置它们:

    import sys 
    from PyQt5 import QtGui, QtCore, QtWidgets
    
    class MyWidget(QtWidgets.QWidget): 
        def __init__(self): 
            QtWidgets.QWidget.__init__(self) 
            self.setGeometry(200,100,600,900)
            self.listWidget = QtWidgets.QListWidget(self)
            self.listWidget.setGeometry(20,20,100,700)
            self.pushButton = QtWidgets.QPushButton(self)
            self.pushButton.setGeometry(20,800,100,30)
            self.pushButton.setText('show Items')
            self.pushButton.clicked.connect(self.showItems)
            self.timer = QtCore.QTimer()
            for i in range(0,100):
                self.listWidget.addItem(str(i))
                self.listWidget.item(i).setHidden(True)
            self.z = 0
    
        def showItems(self):
            self.timer.start(100)
            self.timer.timeout.connect(self.nextItem)    
    
        def nextItem(self):
            try:
                self.listWidget.item(self.z).setHidden(False)
                self.listWidget.repaint() 
                self.z += 1
            except AttributeError:
                self.timer.stop()
                self.z = 0
    
    app = QtWidgets.QApplication(sys.argv) 
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec_())
    

    在pyqt4中用'QtGui'替换'QtWidgets'

相关问题