PyQt5 how to render only the selected cells

I am an amateur programmer, so please excuse my poor coding. I am trying to create a drag and drop for QTableWidget's content. I tried to create an image in order to represent the content being dragged when drag and drop event happen. In the end I only managed to figure out how to populate an entire table's image, by rendering the entire table instead of only the selected cells.

Instead, this is what I want when drag and drop happen

import sys 

from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QTableWidget, QTableWidgetItem,QFrame,QHBoxLayout,QTableWidgetSelectionRange) 
from PyQt5.QtCore import Qt, QMimeData, QByteArray 
from PyQt5.QtGui import QDrag, QPixmap 

import pickle

# from PyQt5.QtCore import QSty

class SpreadSheet(QTableWidget):
    def __init__(self,r,c, parent = None):
        super().__init__(r,c, parent)

    def on_press(self):
        # Disable drag ability being set previously

        # If selected cells greater than 1, allow dragging
        if len(self.selectedIndexes()) > 1:
            test = [1,2,3]
            data = QByteArray(pickle.dumps(test))
            mime_data = QMimeData()
            #mimetype, actual data
            mime_data.setData('DataFrame', data)
            pixmap = QPixmap(self.size())
            hotSpot = self.pos()
            drag = QDrag(self)
            dropAction = drag.exec_(Qt.MoveAction)

I wonder if anyone know of any way to populate(rendering) an image for only the selected cells within a table.