Rozważmy uruchomiony następujący kod (zauważ, że jest to bardzo uproszczona wersja do wykazania problem):Tkinter/matplotlib backend konflikt powoduje nieskończoną MainLoop
import matplotlib.pyplot as plot
from tkinter import * #Tkinter if your on python 2
def main():
fig = plot.figure(figsize=(16.8, 8.0))
root = Tk()
w = Label(root, text="Close this and it will hang!")
w.pack()
root.mainloop()
print('Code never reaches this point')
if __name__ == '__main__':
main()
Zamknięcie pierwszego okna będzie działać dobrze, ale zamykając drugie okno powoduje zawieszenie kodu, ponieważ root.mainloop()
powoduje nieskończoną pętlę. Ten problem jest spowodowany wywołaniem fig = plot.figure(figsize=(16.8, 8.0))
. Czy ktoś wie, jak uzyskać root, aby zamknąć pomyślnie po wykonaniu tej rozmowy matplotlib.pyplot?
'Pyplot' również uruchamia swój własny mainloop, który podejrzewam, że jest twoim problemem. Zobacz http://matplotlib.org/examples/user_interfaces/, jak osadzić mpl w gui do wyboru – tacaswell
Czy istnieje sposób na wymuszenie zamknięcia pętli głównej pyplot? Problem dotyczy wszystkich następujących okien tkinter po wywołaniu pyplot, nawet w różnych modułach. – TheoretiCAL