Simulieren Sie das Klicken von Benutzern in QSystemTrayIcon

Auch durch dieactivated Slot wird ausgeführt, das Menü wird immer noch nicht angezeigt. Ich habe durch manuelles Klicken auf das Tray-Symbol und das simulierte Klicken nachverfolgt und es durchläuft dieselbe Ausführungslogik.

Derzeit habe ich

class MyClass(QObject):
   def __init__():
       self._testSignal.connect(self._test_show)
       self.myTrayIcon.activated.connect(lambda reason: self._update_menu_and_show(reason))

   def show():
       self._testSignal.emit()

   @pyqtSlot()
   def _test_show():
       self._trayIcon.activated.emit(QtWidgets.QSystemTrayIcon.Trigger)

   @QtCore.pyqtSlot()
   def _update_menu_and_show(reason):
       if reason in (QtWidgets.QSystemTrayIcon.Trigger):
        mySystemTrayIcon._update_menu()

...
class MySystemTrayIcon(QSystemTrayIcon):

   def _update_menu(self):
      # logic to populate menu
      self.setContextMenu(menu)
...
MyClass().show()

Antworten auf die Frage(1)

Ihre Antwort auf die Frage