PyQT5, QToolbar, Qaction. Как сделать смену иконки при нажатии на кнопку?

В окне программы имеется панель инструментов QToolbar с кнопками QAction. Работают в режиме обычных кнопок, НЕ вкл/выкл action.setCheckable(False).

Вопрос: возможно ли и как сделать, что бы при нажатии на кнопку иконка менялась на другую, а при отпускании восстанавливалась по умолчанию? По аналогии с press / release.

В режиме выключателя action.setCheckable(True) это реализуется прописыванием иконок:

icon.addFile("my_icon_off.png", QSize(), QIcon.Normal, QIcon.Off)
icon.addFile("my_icon_on.png", QSize(), QIcon.Normal, QIcon.On)

А вот как сделать подобное в режиме кнопки - не могу сообразить


Ответы (1 шт):

Автор решения: Sergey Tatarincev

QAction не имеет соответствующих сигналов, но вы можете добавить на тулбар кнопку, у которой такие возможности есть:

button = QPushButton('test');
button.setIcon(QIcon('my_icon_off.png'));
button.pressed.connect(lambda: button.setIcon(QIcon('my_icon_on.png')));
button.released.connect(lambda: button.setIcon(QIcon('my_icon_off.png')));
self.toolbar.addWidget(button);
→ Ссылка