Bonjour,

Je suis en plein développement d'un petit agent qui tournerai dans le systray, pour Windows et Linux.
J’étais tombé sur l’exemple de tyrtamos, dont je me suis inspiré.
Tout fonctionne comme prévu, sur Windows 7, Windows 10. Sur Linux, toutes les fonctionnalités sont aussi présentes et j'ai juste un petit souci d'affichage de l'icone de l'application sur un poste Debian 8.4 64bits.

Je suis en Python 3.4 64bits + PyQt5.5.1_64
Avant de poster sur le forum, j'ai fait des recherches, mais n'ai trouvé que peu d'informations pour Linux.
J'ai essayé avec différentes icônes (png, svg, xpm) en différentes tailles, mais rien n'y fait...
Je sais que l'icône est bien trouvée, car pour en être sûr je la met aussi sur une entrée du menu et là elle s'affiche bien.

Voici le code de ma classe "SystemTrayIcon":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from PyQt5 import (QtWidgets, QtGui)
import Model


class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
    """ Permet de mettre l'application dans la barre des taches """
    _model = Model.Model()

    def __init__(self, app, qicone, tooltip="", parent=None):
        super(SystemTrayIcon, self).__init__(qicone, app)

        self.app = app
        self.parent = parent

        # ajoute une bulle d'information quand la souris est sur l'icône tray
        if tooltip != "":
            self.setToolTip(self._model.app_tooltip)

        # initialise le menu
        self.initmenu()

    #
    def initmenu(self):

        # crée le menu
        menu = QtWidgets.QMenu(self.parent)

        ouvrirPopupIcon = QtGui.QIcon(self._model.app_icone)   # CELLE-CI S'AFFICHE !!
        ouvrirPopupAction = QtWidgets.QAction(ouvrirPopupIcon, '&Ouvrir Alerte', self)
        ouvrirPopupAction.triggered.connect(self.alerte)
        menu.addAction(ouvrirPopupAction)

        menu.addSeparator()

        # ferme la fenêtre et quitte le programme:
        # l'icône de l'item "Quitter" du menu sera une simple croix rouge
        quitterIcon = QtGui.QIcon.fromTheme("application-exit", QtGui.QIcon(self._model.quitter_icone))
        quitterAction = QtWidgets.QAction(quitterIcon, '&Quitter', self)
        quitterAction.triggered.connect(self.quitter)
        menu.addAction(quitterAction)

        self.setContextMenu(menu)

    def alerte(self):
        """ Ouvre une fenetre de type Alerte"""
        pass


    def quitter(self):
        """permet de quitter: ferme le programme ainsi que le systemtray"""
        reponse = QtWidgets.QMessageBox.question(None,
                                                 "Confirmez!",
                                                 "Voulez-vous vraiment quitter?",
                                                 QtWidgets.QMessageBox.Yes,
                                                 QtWidgets.QMessageBox.No)
        if reponse == QtWidgets.QMessageBox.Yes:
            # ferme la fenêtre si elle est encore ouverte
            try:
                self.fen.close()
            except Exception:
                pass
            # ferme l'application et arrête l'exécution
            self.app.quit()
... appelée de puis le programme principal comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
...
    # Landement de l'application dans la barre des taches
    trayIcon = SystemTrayIcon(app, QtGui.QIcon(model.app_icone), model.app_tooltip)   # ALORS QUE CELLE-LA NE S'AFFICHE PAS, UNIQUEMENT SUR LINUX !!
    trayIcon.show()
...
Voila, si quelqu'un à une idée, je suis preneur, d'autant plus que si ça ne fonctionne pas mieux je vais devoir laisser tomber PyQt5 au profit de PyGObject, que je trouve un peu moins sexy.