From: Hans F. <H.F...@so...> - 2005-01-25 20:09:40
|
Hi John, I am coming back to our earlier discussion ... >>>>>>> "Hans" == Hans Fangohr <H.F...@so...> writes: >> >>> Hm. Done that. A figure window pops up immediately but is >>> not being updated correctly: a part of the graph is visible, >>> the other part of the figure (which was underneath another >>> window initially) appears white. The titel of the figure >>> says "Figure 1 (Not responding)". IDLE, however, responds >>> happily ;-) T >> >> Todd, many moons ago you wrote me and said I had inadvertently screwed >> up something in tkagg show that broke the idle -n behavior. If I >> recall correctly, we never reverted, since I didn't understand exactly >> what to do. Perhaps you could revisit the current tkagg versus the >> old one to make sure it is right. >> >> Hans, does it make a difference if you uncomment >> >> #os.environ['PYTHONINSPECT'] = '1' >> >> in the show method of >> site-packages/matplotlib/backends/backend_tkagg.py? You should set >> 'interactive : True' as Todd suggested. Do not use show, as it is not >> designed for interactive use. I suggest carefully testing all 4 >> combinations: with and without the PYTHONINSPECTmline, and with and >> without -n. > > Setting 'interactive=True' in .matplotlibrc > > IDLE #os.environ['PYTHONINSPECT'] = '1' -> fail > IDLE -n #os.environ['PYTHONINSPECT'] = '1' -> fail > IDLE os.environ['PYTHONINSPECT'] = '1' -> fail > IDLE -n os.environ['PYTHONINSPECT'] = '1' -> success > > So that's good. This doesn't work in non-interactive mode. What I observe is this: - start Idle with -n (the "==== No Subprocess ====" message appears). - at prompt issue commands: >>>import pylab >>>pylab.plot(range(10)) >>>pylab.show() - figure windows shows up - python reports this error message: >>> pylab.show() Exception in Tkinter callback Traceback (most recent call last): File "C:\Python23\lib\lib-tk\Tkinter.py", line 1345, in __call__ return self.func(*args) File "C:\Python23\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 215, in key_release FigureCanvasBase.key_release_event(self, key) File "C:\Python23\Lib\site-packages\matplotlib\backend_bases.py", line 677, in key_release_event event = KeyEvent('key_release_event', self, key, self._lastx, self._lasty) File "C:\Python23\Lib\site-packages\matplotlib\backend_bases.py", line 640, in __init__ LocationEvent.__init__(self, name, canvas, x, y) File "C:\Python23\Lib\site-packages\matplotlib\backend_bases.py", line 566, in __init__ if a.in_axes(self.x, self.y): File "C:\Python23\Lib\site-packages\matplotlib\axes.py", line 1544, in in_axes return self.bbox.contains(xwin, ywin) TypeError: float() argument must be a string or a number The figure windows is interacting (despite the error message). Once I close the figure window, I can't get back to the Python prompt; i.e. the shell doesn't respond any more. Do we expect matplotlib (0.70.1) to work in non-interactive mode with "IDLE -n"? Thanks, Hans |