How to update QListWidget

后端 未结 1 2012
[愿得一人]
[愿得一人] 2021-01-07 10:35

How to update QLIstWidget to show items as when when it is added.

Like i am adding 100 QListWidgetItems to QListWidget in a loop. All these 100 items are visible onl

相关标签:
1条回答
  • 2021-01-07 11:08

    you can repaint the listwidget in the loop:

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

    with QTimer you can control the delay between 2 items.

    Edit: Perhaps i didn't understand your question correctly: you can add all items, hide them and then set them visible item by item:

    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_())
    

    in pyqt4 replace 'QtWidgets' by 'QtGui'

    0 讨论(0)
提交回复
热议问题