When I thread matplotlib and I dont close the graph window frequently (by mouse - close window button) I get the following error:
Exception RuntimeError: RuntimeError('main thread is not in main loop',) in <bound method PhotoImage.__del__ of <Tkinter.PhotoImage instance at 0x7ff408080998>> ignored Exception RuntimeError: RuntimeError('main thread is not in main loop',) in <bound method PhotoImage.__del__ of <Tkinter.PhotoImage instance at 0x7ff3fbe373f8>> ignored
                                                                   Tcl_AsyncDelete: async handler deleted by the wrong thread
                                                                                                                             Aborted
What I do: I have a main loop calling methods of an instance. The matplotlib method is threaded by the init function of that instance. I cant call matplotlib as method inside the instance, I don't know why, so I thread it via __init__:
def __init__(self):
....
thread = threading.Thread(target=self.drawcharts, args=())
        thread.daemon = False                            
        thread.start()
the threaded method:
def drawcharts(self):
        global endthread
        ..do some math..
        try:
            plt.plot(k)
            plt.plot(x1)
            plt.plot(x2)
            plt.plot(x3)
            #plt.plot(v)
            plt.ylabel('some numbers')
            plt.show(block=True)
            self.drawcharts();
        except:
            self.drawcharts()
        if endthread==1:
            return
        return
The global variable endthread is triggered by the exit function of my program (keyboard exception).
I really need matplotlib to run independently from the rest of the program, as it is a curses program and I cant change the structure, so that matplotlib can run in non-blocking mode or else. Also I need the blocking mode as the widgets of the plot-window are needed.
I suppose to loop over the same matplotlib window over and over - without closing the plot windows sometimes - makes something overflow in matplotlib. For some time it works like a charm, but then exits ungracefully.
What can i do about it? Thanks for any help!
 
     
    