如何将Matplotlib窗口置于前台?(针对OSX操作系统)

4

我正在尝试使用matplotlib进行图表可视化,但每次运行项目时寻找窗口非常烦人。有没有办法强制它置于其他窗口之上?我使用的是OSX 10.8和PyCharm IDE,并已经尝试过

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

这个操作失败了

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

我很感激你能提供其他的想法。


你是在使用 show() 后尝试这样做吗? - Mark
3个回答

2

您调用window.raise_()是在PyQT下进行的。确实,您可以通过这种方式提升窗口,但是在操作matplotlib之前,您需要:

  • 将PyQT4设置为您的后端。

而且

import matplotlib
matplotlib.use('Qt4Agg')
  • 要么你修复你的导入语句(删除括号),要么不导入并通过figure访问窗口

使用:

window = fig.canvas.manager.window
  • 只有这样你才能调用 window.raise_(),窗口才会出现在 PyCharm 的前面。

使用 matplotlib.use('Qt5Agg') 也能完美运行。 - Mark

1
[cphlewis]给出了一个很好的答案。我发现自己经常做这件事情,所以我定义了一个小函数来将我的所有窗口都弹到最上层:
def pop_all():
    #bring all the figures hiding in the background to the foreground
    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)

1

这个对我在IPython中有效:

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

我还没有找到show()单独使用不起作用的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接