In this PyQt5 tutorial am going to cover how to pre-select rows from your QTableWidget class when you launch your application



Full Script

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget
from PyQt5.Qt import QTableWidgetItem, QAbstractItemView

class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.createTable()

        lstSelection = [0, 3, 4]
        self.selectRows(lstSelection)

    def initUI(self):
        self.resize(600, 600)
        self.rows = [['a1', 'b1', 'c1'], 
                     ['a2', 'b2', 'c2'], 
                     ['a3', 'b3', 'c3'], 
                     ['a4', 'b4', 'c4'], 
                     ['a5', 'b5', 'c5']]                     

    def createTable(self):
        self.tableWidget = QTableWidget(self)
        self.tableWidget.resize(self.width(), self.height())
        self.tableWidget.setRowCount(len(self.rows))
        self.tableWidget.setColumnCount(len(self.rows[0]))

        self.tableWidget.setSelectionMode(QAbstractItemView.MultiSelection)

        for row in enumerate(self.rows):
            for col in enumerate(row[1]):
                item = QTableWidgetItem()
                item.setText(col[1])
                self.tableWidget.setItem(row[0], col[0], item)

    def selectRows(self, selection: list):
        for i in selection:
            self.tableWidget.selectRow(i)

if __name__ == '__main__':
    app = QApplication(sys.argv)

    demo = AppDemo()
    demo.show()

    sys.exit(app.exec_())