Python matplotlib将窗口显示为活动窗口

Python matplotlib将窗口显示为活动窗口,python,matplotlib,Python,Matplotlib,我正在绘制一些图形,然后使用canvas.mpl\u connect命令与它们交互。因此,当我显示绘图时,我希望窗口从一开始就是活动的 此时,当脚本运行时,将弹出绘图,但它不是活动窗口,终端仍然是(即,如果我键入一个键,该键将写入终端,并且不会被绘图窗口解释)。我需要点击绘图窗口,使其成为活动窗口,然后才能与图形交互。如果它在第一次弹出时就已经处于活动状态,那就更好了 使用python 2.7.5和matplotlib 1.3.1在MacOSX 10.10.3上工作 编辑 我不只是需要把窗口放在

我正在绘制一些图形,然后使用
canvas.mpl\u connect
命令与它们交互。因此,当我显示绘图时,我希望窗口从一开始就是活动的

此时,当脚本运行时,将弹出绘图,但它不是活动窗口,终端仍然是(即,如果我键入一个键,该键将写入终端,并且不会被绘图窗口解释)。我需要点击绘图窗口,使其成为活动窗口,然后才能与图形交互。如果它在第一次弹出时就已经处于活动状态,那就更好了

使用python 2.7.5和matplotlib 1.3.1在MacOSX 10.10.3上工作

编辑


我不只是需要把窗口放在前面,我希望能够与窗口交互,而不必点击它。因此,如果我键入一些键,图形将响应,而不是终端。

您可以设置窗口在“使用画布管理器”中显示的顺序,但它仅适用于某些图形后端。下面的示例使用了TkAgg后端,它可以工作,但相同的想法在macosx后端不起作用

import matplotlib
matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
from pylab import get_current_fig_manager

fig1 = plt.figure()
fig2 = plt.figure()

fig1.canvas.manager.window.attributes('-topmost', 1)

plt.show()

图1应该显示在图2的顶部

所以,我终于找到了一个解决方案

显然,一个解决办法是导入

从AppKit导入NSApplication

并在
show()之前发出:

NSApplication.sharedApplication().activateIgnoringOtherApps_389;(True)

我不确定它是做什么的,显然它只在非交互模式下工作,但这对我来说非常有效

您也可以在这里查看

这只会将窗口移到前面,但不会使其处于活动状态。啊。那样的话,我不知道。一旦你把它设置为最上面的图形,你就可以使用命令选项卡来激活它,但我不知道如何使它更加自动化。