Frage

Ich verwende die Spyder-IDE und stelle fest, dass Matplotlib-Figurenfenster immer hinter anderen Fenstern angezeigt werden.Zum Beispiel direkt nach dem Start von Spyder, wenn ich tippe plt.plot([0,1],[0,1]) In der Konsole erhalte ich eine Handlung hinter dem Hauptfenster von Spyder.Wie kann ich dafür sorgen, dass neue Figurenfenster über allen anderen Fenstern angezeigt werden?

Ich habe diese Lösung gefunden (Lassen Sie das Matplotlib-Plotfenster als aktives Popup-Fenster erscheinen), aber es funktioniert bei mir in Spyder nicht.Ich habe Probleme damit fig.canvas.manager.window.Es sagt AttributeError: 'FigureManagerMac' object has no attribute 'window'.

War es hilfreich?

Lösung

Nun, ich bin zufällig auf die Lösung gestoßen, als ich an etwas anderem gearbeitet habe.

Wenn ich das verwende MacOSX Backend also fig.canvas.manager.window gibt AttributeError: 'FigureManagerMac' object has no attribute 'window'.Wenn ich jedoch das verwende TkAgg Backend also fig.canvas.manager hat das Attribut window.Somit kann ich es umsetzen dieser Vorschlag wie folgt:

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)

Ganz einfach, oder?Der erste knifflige Teil besteht darin, dass Sie das Backend festlegen müssen, bevor Sie Pyplot importieren.Nachträgliches Ändern des Backends bringt meiner Erfahrung nach nichts.Der zweite knifflige Teil ist das Scientific Startup-Skript von Spyder import matplotlib.pyplot as plt direkt beim Starten der Spyder-IDE, sodass Sie keine Möglichkeit haben, das Backend festzulegen, bevor Pyplot importiert wird.Um dies zu umgehen, gehen Sie zu „Einstellungen“ > „Konsole“ > „Externe Module“, stellen Sie das GUI-Backend auf „TkAgg“ ein und starten Sie Spyder neu.Dann funktioniert der obige Code ordnungsgemäß.

Zuvor habe ich das Backend über eingestellt matplotlib.rcParams['backend'] = 'TkAgg' direkt nach dem Start von Spyder.Als ich jedoch etwas anderes tat, bekam ich Fehlermeldungen, die das erwähnten MacOSX Backend.Das ergab für mich keinen Sinn, da ich dachte, ich würde es verwenden TkAgg.Der wahnsinnigste Teil ist, als ich nachgefragt habe matplotlib.get_backend es kam zurück TkAgg!Anscheinend wirkt das Festlegen des Backends nach dem Importieren von Pyplot so, als ob Sie das Backend geändert hätten, aber es ändert nicht wirklich das Backend.Argg!!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top