Esempio n. 1
0
 def setupModel(self, nr_columns, rows):
     self.model = QStandardItemModel()
     root = self.model.invisibleRootItem()
     i1, i2, i3 = QStandardItem(1), QStandardItem(2), QStandardItem(3)
     root.appendRow([i1, i2, i3]) 
     self.model.insertRow(0)
     self.model.setData(QModelIndex(), [1,2,3])
     self.model.setData(QModelIndex(), [5,6,7])
     self._set_data(nr_columns, rows)
Esempio n. 2
0
class MainWindow(QtGui.QMainWindow):
    def __init__(self, nr_columns, rows):
        super(MainWindow, self).__init__()

        self.setupModel(nr_columns, rows)
        self.setupViews()
        self.statusBar()
        self.resize(870, 550)

    def setupModel(self, nr_columns, rows):
        self.model = QStandardItemModel()
        root = self.model.invisibleRootItem()
        i1, i2, i3 = QStandardItem(1), QStandardItem(2), QStandardItem(3)
        root.appendRow([i1, i2, i3]) 
        self.model.insertRow(0)
        self.model.setData(QModelIndex(), [1,2,3])
        self.model.setData(QModelIndex(), [5,6,7])
        self._set_data(nr_columns, rows)

    def _set_data(self, nr_columns, rows):
        start_time = time.time()
        # for row_idx, row in enumerate(rows):
        #     if row_idx % 10 != 0:
        #         pass
        #     self.model.insertRows(row_idx, 1, QtCore.QModelIndex())
        #     for col_idx, col in enumerate(row):
        #         self.model.setData(self.model.index(row_idx, col_idx, QtCore.QModelIndex()),
        #                            col)
        end_time = time.time()
        self.statusBar().showMessage("Inserted data in %g" % (end_time - start_time))

    def setupViews(self):
        splitter = QtGui.QSplitter()
        self.table = QtGui.QTreeView()
        self.table.setItemDelegate(TreeViewDelegate())
        self.table.setModel(self.model)
        splitter.addWidget(self.table)

     #   button = QtGui.QPushButton('Shuffle', self)
     #   button.clicked.connect(self.shuffle)
     #   button.resize(button.sizeHint())
     #   splitter.addWidget(button)

        self.selectionModel = QtGui.QItemSelectionModel(self.model)
        self.table.setSelectionModel(self.selectionModel)
        self.setCentralWidget(splitter)

    def shuffle(self):
        from random import random as rnd
        row_count = self.model.rowCount()
        column_count = self.model.columnCount()
        new_rows = [[str(rnd())[:4] for _ in xrange(column_count)] for _ in xrange(row_count)]
        start_time = time.time()
        self.model.clear()
        for row_idx, row in enumerate(new_rows):
            self.model.insertRow(row_idx, row)
        end_time = time.time()
        self.statusBar().showMessage("Reset data in %g" % (end_time - start_time))