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()