Отключить цикл обработки событий PyQt при редактировании таблицы

Я разрабатываю графический интерфейс с PyQt. Графический интерфейс имеет qListWidget, qTableWidget и график, реализованный с помощью Mayavi. Список относится к фигурам, которые нанесены на график (например, цилиндры и конусы). Когда фигура выбрана в списке, я хочу, чтобы ее свойства были загружены в таблицу (из словарной переменной), а фигура была выделена на графике. У меня заговор Майави работает нормально. Кроме того, если таблица редактируется, мне нужно перерисовать фигуру, чтобы отразить новое значение свойства (как для цилиндра, если радиус изменился).

Итак, когда элемент списка выбран -> обновить таблицу со свойствами элемента (из словарной переменной), выделите элемент на графике

Когда таблица отредактирована -> обновить переменную словаря и заново построить элемент

Проблема: когда я выбираю элемент списка и загружаю данные в таблицу, сигнал qTableWidget ItemChanged срабатывает каждый раз при обновлении ячейки, что вызывает многократное повторное построение фигуры с неполными данными.

Существуют ли типичные средства отключения цикла событий GUI во время программного обновления таблицы? (У меня есть опыт работы с Excel VBA, в этом контексте параметр Application.EnableEvents = False предотвратит запуск события WorksheetChange при каждом программном обновлении ячейки.) Должен ли я иметь переменную «обновление таблицы», чтобы предотвратить выполнение действия во время таблица обновляется? Есть ли способ обновить виджет таблицы все сразу вместо элемента за элементом? (Я признаю, что на данный момент я намеренно избегаю фреймворка Model-View, отсюда и qListWIdget и qTableWidget).

Какие-либо предложения?

Я впервые постер, но долгое время пользуюсь StackOverflow, поэтому я просто хочу заранее поблагодарить вас за то, что вы такое классное сообщество!

Ответы на вопрос(3)

Ваш ответ на вопрос