Сочетание клавиш PyQt5 для QTableWidget перестает работать при очистке таблицы

У меня есть QTableWidget, к которому я хочу прикрепить ярлык для перехода к следующей ячейке при нажатии клавиши Enter/Return с использованием кода, который я нашел ниже. Я повторно использую таблицу пару раз, поэтому я вызываюметод между заполнением таблицы для ее различных целей. Приведенный ниже код отлично работает для первого раунда, но как только я очищаю и повторно заполняю таблицу, она теряет функцию быстрого доступа, хотя я вызываю код каждый раз, когда таблица переназначается. Я понимаю, что мне нужно назначить ярлык только один раз, но мне нужно нажать Enter, чтобы перейти к следующей строке в том же столбце, и, поскольку номера столбцов могут измениться, мне нужно изменить количество пропускаемых ячеек, поэтому я запускаю функцию focusNextPrevChild столько раз.

      for key in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter):
    QtWidgets.QShortcut(key, self.addTransactionTable,
                        partial(HelperFunctions.runFunctionManyTimes,
                                partial(self.addTransactionTable.focusNextPrevChild, True), 
                                len(columns))))

Есть ли способ отменить назначение ярлыка и начать заново с новым количеством столбцов?

Я пытался сохранить объекты QShortcut в переменной-члене класса MainWindow в надежде «сохранить его живым», но это не сработало. С помощью этих сохраненных ярлыков я попытался их деинициализировать с помощьюв надежде отменить их назначение и начать заново, но это не сработало.

1 ответ

Хорошо, поэтому вместо использованияdelчтобы отменить назначение ярлыка, я использовал.deleteLater()метод для более "формального" удаления объектов. Кажется, это сработало. Я все же считаю необходимым сохранять созданные объекты ярлыков, чтобы потом их отменить.

Другие вопросы по тегам