Оставил пока решение с сохранением предыдущего значения ячейки при двойном клике по ней.
Если будет какое-то более подходящее решение, напишите, пожалуйста.
self.tableWidget.cellChanged.connect(self.check_change)
self.tableWidget.doubleClicked.connect(self.save_cell)
...
def save_cell(self):
global previous_cell
previous_cell = str(self.tableWidget.currentItem().text())
def check_change(self):
cell = self.tableWidget.currentItem().text()
if len(set(cell)) == len(cell):
for b in cell:
if b not in 'rwxa':
QtWidgets.QMessageBox.warning(self, 'Ошибка при изменении',
'В ячейке таблицы находится недопустимый символ!\n'
'Разрешенные символы: rwxa',
QtWidgets.QMessageBox.Ok)
self.tableWidget.currentItem().setText(previous_cell)
self.tableWidget.currentItem().setTextAlignment(QtCore.Qt.AlignCenter)
return
else:
QtWidgets.QMessageBox.warning(self, 'Ошибка при изменении',
'В ячейке таблицы находится неуникальный символ!\n'
'Право субъекта на объект должно быть уникальным.',
QtWidgets.QMessageBox.Ok)
self.tableWidget.currentItem().setText(previous_cell)
self.tableWidget.currentItem().setTextAlignment(QtCore.Qt.AlignCenter)
return