2012-04-30 67 views
14

每当我在matplotlib中调用show()时,剧情窗口会出现在所有其他窗口的后面,我必须最小化所有内容才能看到它。有什么办法可以防止这种情况或以编程方式将它带到前面。在OSX Lion上。 Python 2.7版Matplotlib窗口出现在后面?

回答

1

不完全是你的问题的答案,但我使用ipython而不是默认的python控制台。当它与ipython --pylab一起推出时,我可以绘制例如通过键入

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

并且在前面弹出情节。它也有一些非常好的功能;)

+1

我遇到了Python和IPython中我的10.9.1系统上的相同行为,因此它并不一定在任何情况下的解决方案。 – anddam

+0

同样在这里。我相信和我一样,遇到了同样的问题,那就是matplotlib窗口在所有其他窗口后面都是永久性的。即使在任务控制中点击它,我也无法将其引入重点。目前唯一的解决方法是使用任务控制暂时将窗口拖放到一个空的空间_中,然后切换到该空间,将窗口放在焦点上,然后将窗口_back拖动到我的原始空间_,其中z顺序最终是正确的(除非我点击任何其他窗口,导致它立即返回到后面)。 –

+1

**更新:** TkAgg后端没有相同的问题;它被赋予一个顶层窗口(即你可以使用Cmd-Tab切换到它)。它仍然从z顺序的底部开始,但现在它表现正常。我认为小牛队的MacOSX后端必须有一个bug。 –

0

这可能是特定于操作系统,但使用交互式绘图(这只要您指示图)导致数据尽快拿出在前台,因为它们可以在Ubuntu上做出

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

Matplotlib开发人员似乎意识到这个问题。但看着https://github.com/matplotlib/matplotlib/issues/596它看起来有一段时间才会得到一个解决方案,显然是因为有些人觉得它讨厌figure.show()“窃取”屏幕空间。

0

我和nickponline有相同的设置。适用于我的是:

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

如果您有多个数字,则只会产生当前激活的数字。对于这种情况,我发现了以下工作:

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_() 
+1

import line有一个尾随的'()',在图形管理器中似乎也没有更多的窗口属性 – anddam