matplotlib将窗口显示为活动窗口

时间:2015-05-27 09:37:45

标签: python matplotlib

我正在绘制一些图表,然后使用canvas.mpl_connect命令与它们进行交互。因此,当我展示情节时,我希望窗口从一开始就是活动的。

此刻,当脚本运行时,图表会弹出,但它不是活动窗口,终端仍然是(即如果我键入一个键,则写入终端,而不是解释通过情节窗口)。我需要点击绘图​​窗口使其成为活动窗口,然后我才能与图形进行交互。如果它第一次弹出时已经处于活动状态会更好。

使用python 2.7.5和matplotlib 1.3.1

处理MacOSX 10.10.3

修改

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

2 个答案:

答案 0 :(得分:1)

您可以使用画布管理器设置订单窗口,但它仅适用于某些图形后端。下面的示例使用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的顶部。

答案 1 :(得分:0)

所以,我终于在https://github.com/matplotlib/matplotlib/pull/663

找到了解决方案

显然,解决方法是导入

from AppKit import NSApplication

并在show()之前发布:

NSApplication.sharedApplication().activateIgnoringOtherApps_(True)

我不确定它的功能,显然它只能在非交互模式下运行,但这对我来说非常有效。

您可能还想查看此处 https://github.com/matplotlib/matplotlib/issues/665/