J'écris une application wxPython qui reste ouverte après la fermeture de toutes ses fenêtres - donc vous pouvez toujours faire glisser & déposer de nouveaux fichiers sur l'icône du dock OSX (je fais cela avec myApp.SetExitOnFrameDelete(False)
). Malheureusement, si je ferme toutes les fenêtres, la barre de menu OSX ne contiendra qu'un menu "Aide". Je voudrais ajouter au moins un élément de menu Fichier/Ouvrir, ou simplement garder la barre de menu de la fenêtre principale. Est-ce que c'est en quelque sorte possible dans wxPython?Comment modifier la barre de menus OSX dans wxPython sans fenêtre ouverte?
En fait, je serais également satisfait d'un hack non-wxPython (par exemple, en définissant le menu dans pyobjc, mais en exécutant le reste de l'interface graphique dans wxPython). le développement de wxPython dans OSX est quand même un hack;)
MISE À JOUR: J'ai réussi à résoudre ce problème en utilisant le conseil de Lyndsey Ferguson. Voici ce que j'ai fait:
- Au démarrage, je crée une fenêtre que je montre et cache immédiatement. J'ai placé sa position à
(-10000,-10000)
afin qu'il ne scintille pas sur l'écran (aargh, quel sale bidouille!) - Je crée un gestionnaire d'événement vide EVT_CLOSE dans cette fenêtre de sorte qu'il ne peut pas être fermé.
- Il semble que détruire une fenêtre réinitialise le menu OSX, mais ne le cache pas ... Alors quand la dernière fenêtre est fermée, j'ai besoin d'afficher et de masquer cette fenêtre (cacher est nécessaire pour que l'utilisateur ne puisse pas basculer fenêtre en utilisant le menu Fenêtre ou Cmd-`)
Oui, c'est vraiment moche ... Je serai très reconnaissant si quelqu'un propose une solution plus jolie.
MISE À JOUR 2: En fait, il peut être résolu dans un moyen bien plus simple: si nous ne près la dernière fenêtre, seule cacher il. Et assurez-vous qu'il ne répond plus aux événements de menu.
Oui, c'est un hack désagréable - mais cela fonctionne et vous permet de vous concentrer sur l'ajout des fonctionnalités dont vous avez besoin :) –
Intéressant. J'ai utilisé le hack de la fenêtre cachée une fois mais j'ai mis les coordonnées au positif, au-delà de la résolution de l'écran (parce que Windows ou Linux ne gérait pas bien les négatifs). Bit moi quand un utilisateur multi-moniteur se plaignait qu'il y avait une fenêtre fictive sur son deuxième moniteur :) – fraca7