Removing an item from a layout does not delete it. The item will just become a free-floating object with no associated layout.
If you want to get rid of the object completely, explicitly delete it:
def deleteGridWidget(self, index):
item = self.sa_grid.itemAt(index)
if item is not None:
widget = item.widget()
if widget is not None:
self.sa_grid.removeWidget(widget)
widget.deleteLater()