From: Marc A. <ma...@ph...> - 2006-02-18 02:31:11
|
Hello again, Here's a small chunk of code that exhibits the same problem I referred to in an eariler email, ie it won't repaint the window after an event has occured on it until the code is complete.=20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D import MPlot, wx, time,threading,scipy from scipy import * app=3Dwx.PySimpleApp() frame=3DMPlot.PlotFrame() frame.Show() frame.Raise() frame.plot(rand(100),rand(100)) for i in range(15): frame.oplot(rand(100),rand(100)) time.sleep(1) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D NB The absence of an "app.MainLoop()" call at the end, since I've called this from ipython, which is supposed to be clever and automatically the wxPython main loop in another thread automatically (I read this somewhere). I've tried running multi-threaded stuff from the regular python shell, but without success. Any ideas on how to get such a window to at least repaint in spite of events on it, during replot commands? Thanks in advance :-) Marc |
From: John H. <jdh...@ac...> - 2006-02-18 13:20:49
|
>>>>> "Marc" == Marc AHRENS <ma...@ph...> writes: Marc> NB The absence of an "app.MainLoop()" call at the end, since Marc> I've called this from ipython, which is supposed to be Marc> clever and automatically the wxPython main loop in another Marc> thread automatically (I read this somewhere). I've tried Marc> running multi-threaded stuff from the regular python shell, Marc> but without success. ipython is only clever if you launch it in ipython -pylab for pylab mode (which is not compatible with MPlot) or if launched in the --wthread mode for wx threading. So you'll definitely need to do the latter. I haven't had a lot of experience with --wthread; is it correct that if you use wthread you should not use the explicit call to Mainloop? JDH |
From: Marc A. <ma...@ph...> - 2006-02-20 05:23:57
|
Thanks so much for the tip. MPlot seems to be doing real-time plots for me now, following a) your "-wthread" advice and b)having put the measurement code in to a seperate thread. Does this seem unnecessarily complicated? If it works under simpler circumstances, I'll let you know. Also, the "-wthread" option seems to obviate the call to app.MainLoop(). Thanks again guys! Marc Quoting John Hunter <jdh...@ac...>: > >>>>> "Marc" =3D=3D Marc AHRENS <ma...@ph...> writes: > Marc> NB The absence of an "app.MainLoop()" call at the end, since > Marc> I've called this from ipython, which is supposed to be > Marc> clever and automatically the wxPython main loop in another > Marc> thread automatically (I read this somewhere). I've tried > Marc> running multi-threaded stuff from the regular python shell, > Marc> but without success. >=20 > ipython is only clever if you launch it in ipython -pylab for pylab > mode (which is not compatible with MPlot) or if launched in the > --wthread mode for wx threading. So you'll definitely need to do the > latter. I haven't had a lot of experience with --wthread; is it > correct that if you use wthread you should not use the explicit call > to Mainloop? >=20 > JDH >=20 |
From: Fernando P. <Fer...@co...> - 2006-03-13 01:35:32
|
John Hunter wrote: >>>>>>"Marc" == Marc AHRENS <ma...@ph...> writes: > > Marc> NB The absence of an "app.MainLoop()" call at the end, since > Marc> I've called this from ipython, which is supposed to be > Marc> clever and automatically the wxPython main loop in another > Marc> thread automatically (I read this somewhere). I've tried > Marc> running multi-threaded stuff from the regular python shell, > Marc> but without success. > > ipython is only clever if you launch it in ipython -pylab for pylab > mode (which is not compatible with MPlot) or if launched in the > --wthread mode for wx threading. So you'll definitely need to do the > latter. I haven't had a lot of experience with --wthread; is it > correct that if you use wthread you should not use the explicit call > to Mainloop? No, in ipython -wthread we hijack Mainloop so that user calls to it actually call a dummy function. So it /should/ be OK for user scripts (as long as -wthread was given, or -pylab with a WX* backend) to call Mainloop. It will just call ipython's dummy replacement. See http://projects.scipy.org/ipython/ipython/browser/ipython/trunk/IPython/Shell.py for details. Cheers, f |
From: Steve S. <el...@gm...> - 2006-02-19 19:24:03
|
Hi I'm trying to build 0.86.2 on my Debian box. I changed nothing in setup.py that came with the src tar.gz. python setup.py build runs fine but sudo python setup.py install gives ------------------------------------------------------------------------ elcorto@ramrod:~/Install/Matplotlib/matplotlib-0.86.2$ sudo python setup.py install installing data to lib/python2.3/site-packages/matplotlib/mpl-data pygtk present but import failed Using default library and include directories for Tcl and Tk because a Tk window failed to open. You may need to define DISPLAY for Tk to work so that setup can determine where your libraries are located. Gtk-WARNING **: cannot open display: ------------------------------------------------------------------------ I found that the pygtk and Tk related messages are produced by try/except clauses which try to import gtk and Tkinter, which works in the normal interactive python and in a script. My DISPLAY also set: $ echo $DISPLAY :0.0 Any hints are appreciated. Many thanks. cheers, steve -- Random number generation is the art of producing pure gibberish as quickly as possible. |
From: John H. <jdh...@ac...> - 2006-02-21 14:33:35
|
>>>>> "Steve" == Steve Schmerler <el...@gm...> writes: Steve> ------------------------------------------------------------------------ Steve> elcorto@ramrod:~/Install/Matplotlib/matplotlib-0.86.2$ sudo Steve> python setup.py install installing data to Steve> lib/python2.3/site-packages/matplotlib/mpl-data pygtk Steve> present but import failed Using default library and include Steve> directories for Tcl and Tk because a Tk window failed to Steve> open. You may need to define DISPLAY for Tk to work so Steve> that setup can determine where your libraries are located. Steve> Gtk-WARNING **: cannot open display: Steve> ------------------------------------------------------------------------ This is an annoyance that is caused by the fact that the GTK install needs an X11 connection, and in some setups when you install as root the root user does not have access to your display. I usually install as suso: do you have sudo setup? Basically, you need to be able to make sure you can launch an X11 app (eg xterm) in the environment that you are running matplotlib install. Perhaps some UNIX guru can give the proper incantation. In addition to setting the DISPLAY as root, you may need to check your xhost settings. JDH |
From: Christopher B. <Chr...@no...> - 2006-02-21 20:14:34
|
John Hunter wrote: > This is an annoyance that is caused by the fact that the GTK install > needs an X11 connection, Is it really necessary to import GTK when installing MPL? why? I think getting rid of that requirement would be the best fix. >Basically, you need to be able to > make sure you can launch an X11 app (eg xterm) in the environment that > you are running matplotlib install. > > Perhaps some UNIX guru can give the proper incantation. I've done it, but I'm not sure I remember how at the moment. But try something like: xhost +root or even: xhost + which I think lets anyone have access to the Xserver. -Chris -- Christopher Barker, Ph.D. Oceanographer NOAA/OR&R/HAZMAT (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chr...@no... |
From: Steve S. <el...@gm...> - 2006-02-22 12:08:05
|
Christopher Barker wrote: > John Hunter wrote: > >> This is an annoyance that is caused by the fact that the GTK install >> needs an X11 connection, > > > Is it really necessary to import GTK when installing MPL? why? I think > getting rid of that requirement would be the best fix. > >> Basically, you need to be able to >> make sure you can launch an X11 app (eg xterm) in the environment that >> you are running matplotlib install. >> >> Perhaps some UNIX guru can give the proper incantation. > > > I've done it, but I'm not sure I remember how at the moment. But try > something like: > > xhost +root > > or even: > > xhost + > > which I think lets anyone have access to the Xserver. > > -Chris > I've replied to only to John, not the list. Here is the mail again: ================================================================================================ John Hunter wrote: >>>>>> "Steve" == Steve Schmerler <el...@gm...> writes: > > > > Steve> ------------------------------------------------------------------------ > Steve> elcorto@ramrod:~/Install/Matplotlib/matplotlib-0.86.2$ sudo > Steve> python setup.py install installing data to > Steve> lib/python2.3/site-packages/matplotlib/mpl-data pygtk > Steve> present but import failed Using default library and include > Steve> directories for Tcl and Tk because a Tk window failed to > Steve> open. You may need to define DISPLAY for Tk to work so > Steve> that setup can determine where your libraries are located. > > Steve> Gtk-WARNING **: cannot open display: > Steve> ------------------------------------------------------------------------ > > This is an annoyance that is caused by the fact that the GTK install > needs an X11 connection, and in some setups when you install as root > the root user does not have access to your display. Exactly this was the problem. I was logged in from machine A on machine B as user (ssh -X B) and wanted to install on B. So what I did on B was: (as user): user@B:<mpl_path>$ python setup.py build # this works (via sudo): user@B:<mpl_path>$ sudo python setup.py install python setup.py install installing data to lib/python2.3/site-packages/matplotlib/mpl-data pygtk present but import failed Using default library and include directories for Tcl and Tk because a Tk window failed to open. You may need to define DISPLAY for Tk to work so that setup can determine where your libraries are located. Gtk-WARNING **: cannot open display: (becoming su): user@B:<mpl_path>$ su user@B:<mpl_path># python setup.py install X11 connection rejected because of wrong authentication. The application 'setup.py' lost its connection to the display localhost:10.0; most likely the X server was shut down or you killed/destroyed the application. > I usually install > as suso: do you have sudo setup? Basically, you need to be able to > make sure you can launch an X11 app (eg xterm) in the environment that > you are running matplotlib install. Right, I can't open an X app on B via sudo or beeing su. Unfortunalelly I don't understand enough of the X-permission/xhost stuff to get this right :) > Perhaps some UNIX guru can give the proper incantation. He did. Finally I logged in as root (ssh -X root@B) and then everthing went fine. ================================================================================================ Additionally, if you want to install directly on A or B (not beeing logged in via ssh) just open a root terminal and install as usual. sudo and su won't do it. cheers, steve -- Random number generation is the art of producing pure gibberish as quickly as possible. |