#!/usr/bin/env python
import sys
from PySide2.QtCore import QElapsedTimer, QLibraryInfo
from PySide2.QtGui import QKeySequence
from PySide2.QtWidgets import (QAction, QApplication, QMenu, QMenuBar, QTableWidgetItem,
    QMainWindow, QTableWidget)

count = 1000
attempts = 4

class MainWindow(QMainWindow):
    def __init__(self):
        print(QLibraryInfo.build())
        super().__init__()

        menu = self.menuBar().addMenu('File')
        aRun = menu.addAction('Run')
        aRun.setShortcut(QKeySequence("Ctrl+R"))
        aRun.triggered.connect(self._run)
        aQ = menu.addAction('Quit')
        aQ.setShortcut(QKeySequence("Ctrl+Q"))
        aQ.triggered.connect(self.close)

        self.setGeometry(200, 300, 960, 540)
        self.table = QTableWidget()
        self.setCentralWidget(self.table)
        self.table.setRowCount(1000)
        self.horizontal_header = ["1", "2", "3", "4", "5", "6", "7",
                                  "8", "9", "10", "11", "12", "13"]
        self.table.setColumnCount(len(self.horizontal_header))
        self.table.setHorizontalHeaderLabels(self.horizontal_header)

        for i in range(attempts):
            print('Attempt #', i, '/', attempts)
            self._run()

    def _run(self):
        print('Populating',  count)
        timer = QElapsedTimer()
        timer.start()
        for row in range(count):
            for column in range(13):
                item = QTableWidgetItem('1')
                self.table.setItem(row, column, item)
        print('Done', timer.elapsed(), 'ms')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    sys.exit(app.exec_())
