首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新QListWidget

如何更新QListWidget
EN

Stack Overflow用户
提问于 2015-02-16 07:33:35
回答 1查看 8.7K关注 0票数 2

如何更新QLIstWidget以显示添加时的项目。

就像我在循环中将100个QListWidgetItems添加到QListWidget中一样。这100项只有在循环完成后才可见。但是我想知道是否可以在添加项目时显示项目。

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

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 11:45:23

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

代码语言:javascript
复制
def insertItem(self):
    for i in range(1,100):
        self.listWidget.addItem(str(i))
        self.listWidget.repaint()

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

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

代码语言:javascript
复制
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中将“QtWidgets”改为“QtGui”

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28536520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档