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'

我会很感激任何其他想法。

4

3 回答 3

1

这适用于 IPython:

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

不过,我还没有发现 show() 本身不起作用的情况。

于 2014-02-07T03:13:34.237 回答
1

您对 window.raise_(​​) 的调用来自 PyQT。实际上,您可以通过这种方式提高窗口,但您需要:

  • 在你做任何其他业务之前将 PyQT4 设置为你的后端matplotlib

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

window = fig.canvas.manager.window
  • 只有这样你才能调用window.raise_(),窗口将在 pycharm 前面。
于 2014-07-04T16:00:54.467 回答
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)
于 2016-02-02T21:24:23.790 回答