No console do Spyder (o REPL), eu emito arquivos import matplotlib.pyplot as plt
. É o namespace mais alto, ou seja, correspondente a globals()
.
Em um arquivo de inicialização do Spyder, defino uma função para elevar as janelas das figuras ao topo.
def TKraiseCFG( FigID = None ):
import matplotlib.pyplot as plt
# The rest is just context
#-------------------------
# Assigning to plt unnecessary if
# imported plt is same object as in
# caller's scope
plt = inspect.currentframe().f_back.f_globals['plt'] # plt=globals()['plt']
# https://stackoverflow.com/a/78732915
if FigID is not None: plt.figure( FigID )
cfm = plt.get_current_fig_manager()
cfm.window.attributes('-topmost', True)
cfm.window.attributes('-topmost', False)
return cfm
O plt
in TKraiseCFG()
refere-se ao mesmo objeto plt
do REPL?
Contexto adicional (não a questão principal): não consigo imaginar um console/REPL (ou mesmo vários consoles) usando mais de um arquivo matplotlib.pyplot
. Mas estou apenas conhecendo Python, então posso estar errado. Para o caso de um único common matplotlib.pyplot
, no entanto, estou procurando uma maneira de torná-lo acessível a todos os escopos, para que eu possa escrever funções de conveniência/utilidade como TKraiseCFG()
(que foram montadas depois de ler várias páginas, semanas atrás). Infelizmente, meu método atual exige que a invocação do código TKraiseCFG()
contenha uma variável chamada especificamente plt
reference matplotlib.pyplot
.
Sim, é o mesmo objeto. Embora eu não tenha conseguido encontrar a documentação do matplotlib que afirma isso claramente.
Você pode testar se os objetos plt apontam para a mesma instância com o
is
operador assim: