Как отличить левый и правый клик с помощью QSystemTrayIcon

проблема

При запуске следующего кода PyQt5 в MacOS (Sierra 10.12.6)

self.tray_icon = QtWidgets.QSystemTrayIcon(QtGui.QIcon("icon/path"), self)
self.tray_icon.activated.connect(self.on_systray_activated)

[...]

def on_systray_activated(self, i_reason):
    logging.debug("entered on_systray_activated. i_reason = " + str(i_reason))

мы получаем причину активации QSystemTrayIcon::Trigger даже если щелкнуть правой кнопкой мыши

В других системах (например, XFCE) мы получаем QSystemTrayIcon::Context когда пользователь щелкает правой кнопкой мыши

Вопрос

Как мы можем различить щелчок левой и правой кнопкой мыши на значке systray в MacOS?

1 ответ

Метод QApplication.mouseButtons можно использовать для получения текущего состояния кнопок мыши:

def on_systray_activated(self, i_reason):
    buttons = QtWidgets.qApp.mouseButtons()
    if buttons & QtCore.Qt.RightButton:
        logging.debug('on_systray_activated: right-button')
Другие вопросы по тегам