4 votes

OSX Comment amener la fenêtre Matplotlib au premier plan?

Je suis en train d'essayer d'utiliser matplotlib pour des visualisations de graphiques, mais c'est très ennuyeux de chercher une fenêtre à chaque fois que je lance le projet. Y a-t-il un moyen de le forcer à rester au-dessus des autres fenêtres? J'utilise OSX 10.8 et PyCharm IDE et j'ai déjà essayé

from pylab import get_current_fig_manager()
get_current_fig_manager().window.raise_()

Ce qui échoue avec

AttributeError: 'FigureManagerMac' object has no attribute 'window'

Je serais reconnaissant pour toute autre idée.

2voto

dsheene Points 113

Ton appel à window.raise_() est de PyQT. En effet, vous pouvez élever la fenêtre de cette manière mais vous devez:

  • définir PyQT4 comme votre backend avant de faire quoi que ce soit d'autre avec matplotlib

Et

import matplotlib
matplotlib.use('Qt4Agg')
  • Soit vous corrigez votre instruction d'importation (supprimez les crochets) soit vous vous épargnez l'importation et accédez à la fenêtre à travers la figure

avec

window = fig.canvas.manager.window
  • Seulement alors vous pouvez appeler window.raise_() et la fenêtre sera devant pycharm.

1voto

cphlewis Points 7847

Cela fonctionne pour moi à partir d'IPython:

from pylab import get_current_fig_manager
fm = get_current_fig_manager()
fm.show()

Je n'ai pas trouvé de cas dans lequel show() ne fonctionne pas seul, cependant.

1voto

jlansey Points 1540

[cphlewis] avait une excellente réponse. Je me suis retrouvé à faire cela si souvent que j'ai définitivement une petite fonction pour faire remonter toutes mes fenêtres à la surface :

def pop_all():
    #faire remonter toutes les figures cachées à l'arrière-plan au premier plan
    all_figures=[manager.canvas.figure for manager in matplotlib.\
        _pylab_helpers.Gcf.get_all_fig_managers()]
    [fig.canvas.manager.show() for fig in all_figures]
    return len(all_figures)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X