Como posso exibir uma matplotlib figura janela na parte superior de todas as outras janelas em Spyder

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

  •  21-12-2019
  •  | 
  •  

Pergunta

Eu estou usando o Spyder IDE e eu acho que o matplotlib figura windows aparecem sempre por trás de outras janelas.Por exemplo, imediatamente após o início Spyder, se eu digitar plt.plot([0,1],[0,1]) no console, eu recebo um terreno atrás da Spyder janela.Como posso criar nova figura de visualização do windows no topo de todas as outras janelas?

Eu encontrei esta solução (fazer o matplotlib de plotagem janela pop-up como o ativo), mas ele não funciona para mim em Spyder.Eu executar em problemas com fig.canvas.manager.window.Ele diz AttributeError: 'FigureManagerMac' object has no attribute 'window'.

Foi útil?

Solução

Bem, eu estava com a solução quando eu estava trabalhando em outra coisa.

Quando eu uso o MacOSX back-end e, em seguida, fig.canvas.manager.windowAttributeError: 'FigureManagerMac' object has no attribute 'window'.No entanto, quando eu uso o TkAgg back-end e, em seguida, fig.canvas.manager tem o atributo window.Assim, eu posso implementar esta sugestão como segue:

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)

Bastante simples, certo?A primeira parte complicada é que você deve definir o back-end antes de import pyplot.Alterar o back-end depois não faz nada na minha experiência.A segunda parte complicada é Spyder Científica script de Inicialização não import matplotlib.pyplot as plt quando você iniciar o Spyder IDE, portanto, você não tem chance de definir o back-end antes de pyplot é importado.A maneira de contornar isso é ir para as Preferências->Console->Módulos Externos, definir o GUI Backend para TkAgg, e reiniciar o Spyder.Em seguida, o código acima funciona corretamente.

Anteriormente, eu estava montando o back-end através de matplotlib.rcParams['backend'] = 'TkAgg' logo após o lançamento Spyder.Quando eu estava fazendo outra coisa, porém, eu comecei a receber erros que mencionado o MacOSX back-end.Isso não faz qualquer sentido para mim, pois eu pensei que eu estava usando TkAgg.O irritante é quando eu perguntei matplotlib.get_backend ele voltou TkAgg!Aparentemente, a definição de back-end depois de importar pyplot age como se você tiver alterado o back-end, mas, na verdade, não altere o back-end.Argg!!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top