I think I found the issue
sample:
from krita import *
from PyQt5 import QtWidgets, QtCore, QtGui, uic
QApplication.setAttribute(Qt.AA_DontShowIconsInMenus, True)
icon = Krita.instance().icon('folder-pictures')
cmenu = QMenu()
action_0 = QAction(text="0",
icon=icon,
iconVisibleInMenu=True, # overrides Qt.AA_DontShowIconsInMenu
parent=cmenu
)
action_1 = QAction(text="1",
icon=icon,
iconVisibleInMenu=True, # overrides Qt.AA_DontShowIconsInMenu
parent=cmenu
)
action_2 = QAction(text="2",
icon=icon,
iconVisibleInMenu=True, # overrides Qt.AA_DontShowIconsInMenu
parent=cmenu
)
cmenu_0 = cmenu.addAction(action_0)
cmenu_1 = cmenu.addAction(action_1)
cmenu_2 = cmenu.addAction(action_2)
# Execute
position = QPoint(100,100)
action = cmenu.exec_(position)
# Triggers
if action == cmenu_0:
QtCore.qDebug("0")
if action == cmenu_1:
QtCore.qDebug("1")
if action == cmenu_2:
QtCore.qDebug("2")
If you have the icon set on the action before you set it up on the qmenu it will not trigger the action.
however if you set up the icon on the qmenu element it will trigger the action.
sample:
from krita import *
from PyQt5 import QtWidgets, QtCore, QtGui, uic
QApplication.setAttribute(Qt.AA_DontShowIconsInMenus, False)
icon = Krita.instance().icon('folder-pictures')
cmenu = QMenu()
cmenu_0 = cmenu.addAction("0")
cmenu_1 = cmenu.addAction("1")
cmenu_2 = cmenu.addAction("2")
# Icons
cmenu_0.setIcon(icon)
cmenu_1.setIcon(icon)
cmenu_2.setIcon(icon)
# Execute
position = QPoint(100,100)
action = cmenu.exec_(position)
# Triggers
if action == cmenu_0:
QtCore.qDebug("0")
if action == cmenu_1:
QtCore.qDebug("1")
if action == cmenu_2:
QtCore.qDebug("2")
Must be this the reason why it is unactive for Windows.