我在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支持,它似乎沒有效果(甚至沒有投訴) –