#!/usr/bin/env python

from PyQt4 import QtGui
from PyQt4 import QtCore


class Widget(QtGui.QWidget):

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.treewidget = QtGui.QTreeWidget(self)
        self.button = QtGui.QPushButton(self)
        self.button.setText('Refresh')

        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)
        layout.addWidget(self.treewidget)
        self.setLayout(layout)

        self.connect(self.button, QtCore.SIGNAL('pressed()'),
                     self.add_items)

    def add_items(self):
        self.button.setEnabled(False)

        widget = self.treewidget
        root = widget.invisibleRootItem()
        root.takeChildren()

        app = QtGui.QApplication.instance()
        mkitem = QtGui.QTreeWidgetItem

        for i in range(160000):
            item = mkitem(root)
            item.setText(0, '#%06d' % i)
            if 0 == i % 500:
                app.processEvents()

        self.button.setEnabled(True)


def main():
    app = QtGui.QApplication([])
    widget = Widget(app.activeWindow())
    widget.show()
    widget.raise_()
    app.exec_()


if __name__ == '__main__':
    main()
