2012-04-30 107 views
14

每當我在matplotlib中調用show()時,劇情窗口會出現在所有其他窗口的後面,我必須最小化所有內容才能看到它。有什麼辦法可以防止這種情況或以編程方式將它帶到前面。在OSX Lion上。 Python 2.7版Matplotlib窗口出現在後面?

回答

1

不完全是你的問題的答案,但我使用ipython而不是默認的python控制檯。當它與ipython --pylab一起推出時,我可以繪製例如通過鍵入

>> plot([1,3,2]) 

並且在前面彈出情節。它也有一些非常好的功能;)

+1

我遇到了Python和IPython中我的10.9.1系統上的相同行爲,因此它並不一定在任何情況下的解決方案。 – anddam

+0

同樣在這裏。我相信和我一樣,遇到了同樣的問題,那就是matplotlib窗口在所有其他窗口後面都是永久性的。即使在任務控制中點擊它,我也無法將其引入重點。目前唯一的解決方法是使用任務控制暫時將窗口拖放到一個空的空間_中,然後切換到該空間,將窗口放在焦點上,然後將窗口_back拖動到我的原始空間_,其中z順序最終是正確的(除非我點擊任何其他窗口,導致它立即返回到後面)。 –

+1

**更新:** TkAgg後端沒有相同的問題;它被賦予一個頂層窗口(即你可以使用Cmd-Tab切換到它)。它仍然從z順序的底部開始,但現在它表現正常。我認爲小牛隊的MacOSX後端必須有一個bug。 –

0

這可能是特定於操作系統,但使用交互式繪圖(這隻要您指示圖)導致數據儘快拿出在前臺,因爲它們可以在Ubuntu上做出

import pylab as P 
P.ion() 
P.figure(1) 
P.plot([1,2,3],[1,4,9]) 
1

Matplotlib開發人員似乎意識到這個問題。但看着https://github.com/matplotlib/matplotlib/issues/596它看起來有一段時間纔會得到一個解決方案,顯然是因爲有些人覺得它討厭figure.show()「竊取」屏幕空間。

0

我和nickponline有相同的設置。適用於我的是:

from pylab import get_current_fig_manager() 
get_current_fig_manager().window.raise_() 

如果您有多個數字,則只會產生當前激活的數字。對於這種情況,我發現了以下工作:

fig1=figure(1) 
cfm1=get_current_fig_manager().window 

fig2=figure(2) 
cfm2=get_current_fig_manager().window 
... 
cfm1.activateWindow() 
cfm1._raise() 
pause(.1) # or something else that uses up some time 
cfm2.activateWindow() 
cfm2.raise_() 
+1

import line有一個尾隨的'()',在圖形管理器中似乎也沒有更多的窗口屬性 – anddam