Spyderの他のすべてのウィンドウの上にMATPLOTLIBフィギュアウィンドウを表示する方法

StackOverflow https://stackoverflow.com//questions/20025077

  •  21-12-2019
  •  | 
  •  

質問

私はSpyder IDEを使用しています、そして私はMatpLotLib Figure Windowsが常に他のウィンドウの後ろに表示されることを見つけました。たとえば、Spyderを起動した直後に、コンソールにplt.plot([0,1],[0,1])を入力した場合、メインスパイダーウィンドウの後ろにプロットが表示されます。新しい図のWindowsが他のすべてのWindowsの上に表示されるようにする方法は?

私はこの解決策を見つけました(メイクMatplotLibプロットウィンドウを作るアクティブな1つとしてポップアップしますが、それは私のためにSpyderでは動作しません。fig.canvas.manager.windowで問題が発生します。それはAttributeError: 'FigureManagerMac' object has no attribute 'window'を紹介します。

役に立ちましたか?

解決

ええと、私が他の何かに取り組んでいたときに私は解決策に起こった。

MacOSXバックエンドを使用すると、fig.canvas.manager.windowAttributeError: 'FigureManagerMac' object has no attribute 'window'を与えます。ただし、TkAggバックエンドを使用すると、fig.canvas.managerには属性windowがあります。したがって、私はこの提案

を実装できます。
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([0,1],[0,1])
#Put figure window on top of all other windows
fig.canvas.manager.window.attributes('-topmost', 1)
#After placing figure window on top, allow other windows to be on top of it later
fig.canvas.manager.window.attributes('-topmost', 0)
.

簡単な右?最初のトリッキー部分は、Pyplotをインポートする前にバックエンドを設定する必要があります。その後バックエンドを変更すると私の経験には何もしません。 2番目のトリッキーな部分はSpyder IDEを起動したときにPyplotがインポートされる前にバックエンドを設定する機会がないため、Spyderの科学的な起動スクリプトはimport matplotlib.pyplot as pltです。これを回避する方法は、[設定] - > [コンソール] - > [外部モジュール]に進み、GUIバックエンドをTKAGGに設定し、SPYDERを再起動します。その後、上記のコードは正しく機能します。

以前は、Spyderを起動した直後に、matplotlib.rcParams['backend'] = 'TkAgg'を介してバックエンドを設定していました。ただし、私が他のことをしていたとき、私はMacOSXバックエンドを述べたエラーの取得を開始しました。 TkAggを使用していたと思ったので、これは私には意味がありませんでした。 MADDENING部分はmatplotlib.get_backendを照会したときにTkAggを返しました。明らかに、Pyplotをインポートした後にバックエンドを設定すると、バックエンドが変更されたかのように機能しますが、実際にはバックエンドを変更しません。 argg!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top