def keyPressEvent(self, event): """Add functionallity to keyboard""" if event.key() == 16777223: for item in self.selectedItems(): item.setText('') elif event.key() == 16777221 or event.key( ) == 16777220: # *.221 is right enter if len(self.selectedIndexes() ) == 0: # Quick check if anything is selected pass else: index = self.selectedIndexes()[0] # Take last if index.row() + 1 > self.rowCount() - 1: self.addRow_with_items() self.setCurrentCell(index.row() + 1, index.column()) else: modifiers = QGuiApplication.keyboardModifiers() if modifiers == QtCore.Qt.ControlModifier and event.key( ) == 67: # Copy self.saved_text = '' new_row = False for index in self.selectedIndexes(): if index.column() == 0: if new_row: self.saved_text += '\n' new_row = True self.saved_text += self.item(index.row(), index.column()).text() self.saved_text += '\t' elif index.column() == 1: self.saved_text += self.item(index.row(), index.column()).text() self.saved_text += '\n' new_row = False self.clipboard.setText(self.saved_text) elif modifiers == QtCore.Qt.ControlModifier and event.key( ) == 86: # Paste clipboard_text = self.clipboard.text() clipboard_text = clipboard_text.split('\n') paste_index = self.selectedIndexes()[0] row = paste_index.row() for text, index in zip(clipboard_text, range(len(clipboard_text))): text = text.split('\t') column = paste_index.column() for input in text: if input == '': continue if column > self.columnCount() - 1: pass else: if self.item(row, column) is None: self.addRow_with_items() self.item(row, column).setText(input) column += 1 row += 1 else: super().keyPressEvent(event) # Propagate to built in methods