我在mac os上使用python和matplotlib x。 当我在很多不同的窗口上工作时,我必须运行一个能产生图形的脚本,图形窗口总是在活动窗口后面打开,并且非常沮丧不得不在窗口之间切换以查看图像。 这是为什么决定绘图窗口的位置,和/或弹出它作为前景窗口?使matplotlib绘图窗口作为活动窗口弹出
谢谢
我在mac os上使用python和matplotlib x。 当我在很多不同的窗口上工作时,我必须运行一个能产生图形的脚本,图形窗口总是在活动窗口后面打开,并且非常沮丧不得不在窗口之间切换以查看图像。 这是为什么决定绘图窗口的位置,和/或弹出它作为前景窗口?使matplotlib绘图窗口作为活动窗口弹出
谢谢
我发现这个线程一个很好的答案: How to make a Tkinter window jump to the front?
基本上,这个想法是使用窗口属性 - 将'-topmost'属性设置为True(1)以使窗口进入到前景,然后将其设置为False(0),以便稍后允许其他窗口显示在其前面。下面是代码为我工作:
import matplotlib.pyplot as plt
wm = plt.get_current_fig_manager()
wm.window.attributes('-topmost', 1)
wm.window.attributes('-topmost', 0)
我发现这种溶液经常需要(例如使用Spyder的IDE时),我裹成一个功能。
def show_plot(figure_id=None):
if figure_id is None:
fig = plt.gcf()
else:
# do this even if figure_id == 0
fig = plt.figure(num=figure_id)
plt.show()
plt.pause(1e-9)
fig.canvas.manager.window.activateWindow()
fig.canvas.manager.window.raise_()
对我来说(OSX 10.10.2,Matplotlib 1.4.3),什么工作是改变matplotlib后端TkAgg。进口pyplot或任何东西之前,去:
import matplotlib
matplotlib.use('TkAgg')
情节Windows现在弹出,可命令Tab'ed来。
这对我有效!
(测试在Mac OS X 10.11,Spyder的2.3.5.2 - Python的3.4)
转至首选项> IPython的控制台>图形和设置后端Qt的(后需要重新启动内核) 。
使包含一个文件:
def raise_window(figname=None):
if figname: plt.figure(figname)
cfm = plt.get_current_fig_manager()
cfm.window.activateWindow()
cfm.window.raise_()
,并在启动时导入(首选项> IPython的控制台>启动>运行文件)。现在,只需在您的代码下面调用功能raise_window()
即可。
实施例:
作为MacOSX上10.11.6 matplotlib 1.5.1的,如果启动一个IPython的(5.0.0,Python的:3.5。2)外壳和use %matplotlib您可以使用带来matplotlib阴谋面前:
>>> %matplotlib
Using matplotlib backend: MacOSX
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,3,2,4])
>>> plt.show()
** 编辑:建议似乎是not to use %pylab因为它污染了全局命名空间 **
..壳并使用%pylab
您可以使用带来matplotlib阴谋面前:
>>> %pylab
Using matplotlib backend: MacOSX
Populating the interactive namespace from numpy and matplotlib
>>> plot([1,3,2,4])
>>> show()
适用于MacOS塞拉利昂和Python 3.6,Matplotlib 2.0.0
get_current_fig_manager().show()
上述行不需要其他任何东西。
不幸的是,我试过QT4Agg支持,它似乎没有效果(甚至没有投诉) –