16 votes

La fenêtre Matplotlib apparaît à l'arrière ?

Chaque fois que j'appelle show() Dans Matplotlib, la fenêtre de tracé apparaît derrière toutes les autres fenêtres et je dois tout minimiser pour la voir. Existe-t-il un moyen d'empêcher cela ou de la mettre en avant de manière programmatique ? Sur OSX Lion. Python 2.7

1voto

thundersteele Points 673

Ce n'est pas exactement une réponse à votre question, mais j'utilise ipython au lieu de la console python par défaut. Lorsqu'il est lancé avec ipython --pylab Je peux tracer, par exemple, en tapant

>> plot([1,3,2])

et faire apparaître l'intrigue devant. Il possède également d'autres fonctionnalités très intéressantes ;)

1voto

Les développeurs de Matplotlib semblent être conscients de ce problème. Mais en regardant https://github.com/matplotlib/matplotlib/issues/596 il semble qu'il faudra attendre un certain temps avant d'obtenir une solution, apparemment parce que certaines personnes trouvent gênant que figure.show() "vole" de l'espace à l'écran.

1voto

vogdb Points 670

Bien. Cette réponse est présentée dans les commentaires de la réponse acceptée mais je pense qu'elle mérite d'avoir une place à part car elle résout bien le problème. En plus du problème de l'auteur, j'ai également eu le problème que la fenêtre de matplotlib n'était pas dans la barre des tâches de Windows actif et que je ne pouvais donc pas passer à elle par <Alt>+<Tab> .

Changement du backend par défaut de matplotlib macosx a tout résolu. Vous pouvez essayer immédiatement dans votre code comme ceci :

import matplotlib
matplotlib.use("Qt5agg")

Qt5agg pourrait ne pas être présenté dans votre système, alors veuillez choisir celui qui l'est. Vous pouvez les trouver :

import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)

Si cela vous a aidé, vous pouvez modifier votre backend dans la configuration. Pour cela, localisez-le d'abord :

import matplotlib
matplotlib.matplotlib_fname()

Alors changez backend: valeur :

backend      : macosx

à votre backend. J'ai utilisé à la fin :

backend      : TkAgg

0voto

Oliver Points 2601

Il se peut que ce soit spécifique au système d'exploitation, mais l'utilisation du traçage interactif (qui effectue le traçage dès que vous l'ordonnez) fait que les chiffres apparaissent au premier plan dès que le système d'exploitation le permet. comme ils sont faits sur Ubuntu :

import pylab as P
P.ion()
P.figure(1)
P.plot([1,2,3],[1,4,9])

0voto

André Points 1

J'ai la même configuration que nickponline. Ce qui fonctionne pour moi est :

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

Si vous avez plusieurs figures, cela n'augmente que celle qui est actuellement active. Pour ce cas, j'ai trouvé que ce qui suit fonctionne :

fig1=figure(1)
cfm1=get_current_fig_manager().window

fig2=figure(2)
cfm2=get_current_fig_manager().window
...
cfm1.activateWindow()
cfm1._raise()
pause(.1)  # or something else that uses up some time
cfm2.activateWindow()
cfm2.raise_()

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