Matplotlib窗口出现在后面?

问题描述 投票:16回答:5

每当我在matplotlib中调用show()时,绘图窗口会出现在所有其他窗口后面,我必须尽量减少所有内容才能看到它。有什么方法可以阻止这个或以编程方式将它带到前面。在OSX Lion上。 Python 2.7

python macos plot matplotlib
5个回答
1
投票

好。这个答案在对已接受的答案的评论中提出,但我认为它应该有一个单独的地方,因为它很好地解决了这个问题。除了作者的问题,我还有问题,matplotlib窗口不在活动窗口的托盘中,所以我无法切换到<Alt>+<Tab>

改变matplotlib的默认后端macosx解决了一切。你可以在你的代码中立即尝试这样:

import matplotlib
matplotlib.use("Qt5agg")

Qt5agg可能不会出现在你的系统中,那么请选择那个。你可以找到它们:

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

如果它有帮助,那么您可能希望在配置中更改后端。为此,首先找到它:

import matplotlib
matplotlib.matplotlib_fname()

然后改变backend:值:

backend      : macosx

到你的后端。我最后用过:

backend      : TkAgg

1
投票

不完全是你的问题的答案,但我使用ipython而不是默认的python控制台。当用ipython --pylab启动时,我可以绘制例如通过打字

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

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


1
投票

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


0
投票

它可能是特定于操作系统的,但是使用交互式绘图(在您指示后立即绘制)会导致数字在Ubuntu上生成后立即出现在前台:

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

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_()
© www.soinside.com 2019 - 2024. All rights reserved.