En utilisant wxPython, j'ai créé une icône et un menu dans la barre des tâches. Tout fonctionne correctement (sous Windows au moins) en faisant un clic droit sur l'icône: c'est-à-dire que le menu est affiché et automatiquement masqué lorsque vous cliquez ailleurs, comme dans la barre des tâches de Windows.wxPython: comment faire pour que l'icône de la barre des tâches réponde au clic gauche
Maintenant je veux que le menu apparaisse quand l'icône est également cliquée gauche. J'inséré un Bind()
à un clic gauche dans l'emballage de classe Frame, en appelant la CreatePopupMenu()
de l'icône de la barre des tâches:
import wx
class BibTaskBarIcon(wx.TaskBarIcon):
def __init__(self, frame):
wx.TaskBarIcon.__init__(self)
self.frame = frame
icon = wx.Icon('test_icon.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(icon, "title")
def CreatePopupMenu(self):
self.menu = wx.Menu()
self.menu.Append(wx.NewId(), "dummy menu ")
self.menu.Append(wx.NewId(), "dummy menu 2")
return self.menu
class TaskBarFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, style=wx.FRAME_NO_TASKBAR)
...
self.tbicon = BibTaskBarIcon(self)
wx.EVT_TASKBAR_LEFT_UP(self.tbicon, self.OnTaskBarLeftClick)
...
def OnTaskBarLeftClick(self, evt):
self.PopupMenu(self.tbicon.CreatePopupMenu())
...
def main(argv=None):
app = wx.App(False)
TaskBarFrame(None, "testing frame")
app.MainLoop()
Cela fonctionne bien, sauf que le menu ne disparaît pas automatiquement lorsque vous cliquez sur ailleurs sur votre écran. En fait, un clic gauche plusieurs fois sur l'icône crée plusieurs menus. La seule façon de cacher le (s) menu (s) est de cliquer sur l'un de ses éléments (ce que vous ne voulez pas toujours). J'ai regardé les méthodes disponibles de TaskbarIcon, mais j'ai échoué à savoir lequel utiliser pour masquer le menu (.Destroy()
ne fonctionnait pas). De plus, je ne sais pas à quel événement le lier (il y a un EVT_SET_FOCUS
, mais je n'ai pas trouvé de EVT_LOOSE_FOCUS
ou similaire). Alors, comment cacher le menu après avoir perdu le focus?
EDIT: J'ai inséré un peu plus de code, pour le rendre plus clair
Pouvez-vous indiquer ce qu'est BibTaskBarIcon? et il serait mieux si vous pouvez donner un code simple qui peut être exécuté sur copier-coller et affiche le problème –
J'ai étendu le code un peu. Maintenant, il est prêt à copier-coller, sauf pour le fichier icône – Rabarberski
Devinez que vous utilisez Windows depuis un clic ailleurs, même sur l'icône ferme le menu. (ubuntu) –