Fabien, The GUI not being responsive might be my fault, I've never used a timer of 0 and processEvents(). I think what might be happening is that when you call processEvents, the timer of 0 calls your principal function again, which calls processEvents again, and so on. Try a timer of 2 again, that "should" stop the timer from being constantly triggered. Later today, once I get to work, I'll run some tests of my own and figure out if that's really the problem. Email me if you make any progress.
-Dave On 12/13/2011 2:30 AM, Fabien Lafont wrote: > Hey David, > > I'm doing this program to control an experiment, so I want to put the > voltage on the sample, then wait two seconds to be sure there is no > current fluctuations then measure the curent with multimeters and > finally plot the datas. That's why I need the "sleep"... In fact I > wanted to use in parallel the timer to "refresh" the graph and a while > loop to "extract" the datas. > > If I use startTimer(0) it works but the GUI is almost unresponsive. > I'm trying to use qApp.processEvents() but up to now I don't manage to > see the window appears... > > Thanks again for your help > > Fabien > > > > 2011/12/12 David Hoese<dho...@gmail.com>: >> Hey Fabien, >> >> So you made your principal function run on a timer every 2 seconds? And by >> "lag" do you mean that the GUI is unresponsive? I'm still not seeing when >> the loop stops, but what you can do is set the timer at a 0 interval so it >> will call the principal function as fast as it can (but with no loop). The >> problem with this is that you have those 2 sleep calls in the function. I'm >> not sure why you have the sleeps, but if you need them you have two choices: >> >> 1. Make you GUI multi-threaded and you could emit a Qt signal from the data >> thread when the GUI thread needs to update the GUI. Yes this could get >> complicated, but if the sleeps are required then its probably the best way. >> >> 2. (From what I've been told, the Qt experts don't approve this) You can use >> app.processEvents() in your loop (after each sleep maybe) and this will >> pause your function and tell the main event loop to process any queued >> events (like GUI actions/events) which will make your GUI more responsive. >> >> If that doesn't make sense let me know. >> >> -Dave >> >> >> On 12/12/11 9:16 AM, Fabien Lafont wrote: >>> >>> Hi David! Sorry about the delay I was abroad and without any way to >>> connect to the internet. >>> >>> Thank you very much. I've tried to put the principal inside the >>> timerEvent. It work but it lags. In fact I've set the interval of the >>> Timer to 2 seconds because the principal loop takes roughly 2seconds >>> but it's not very accurate... >>> >>> Is there a way to do the principal loop, show it on the screen, then >>> redo the loop? >>> >>> Thanks again! >>> >>> Fabien >>> >>> 2011/12/5 David Hoese<dho...@gmail.com>: >>>> >>>> If I'm understanding your question correctly and reading your code >>>> correctly, you're asking why the timer method of doing things works, but >>>> the >>>> principal() while loop method does not. >>>> >>>> I had a couple solutions that involved the main event loop, but I just >>>> noticed 2 main things that are probably wrong with your code: >>>> 1. You are calling 'principal' from inside __init__ so you never actually >>>> return from __init__ which means that you never call "window.show()" and >>>> therefore never call "qApp.exec_()". If you really want to use the >>>> 'principal' method you would have to connect it to a one shot timer anyway >>>> to have it run after you have started the application ('qApp.exec_()'). I >>>> think the recommended way would be to use the timer the way you did in your >>>> latest email. >>>> >>>> 2. At least in the way my email client reads your original code, your >>>> calls to the matplotlib drawing functions aren't inside the while loop and >>>> the while loop never ends...although this doesn't matter if you don't fix >>>> #1 >>>> above. >>>> >>>> Hope that made sense. >>>> >>>> -Dave >>>> >>>> >>>> On 12/5/11 1:44 PM, matplotlib-users-requ...@lists.sourceforge.net wrote: >>>>> >>>>> Message: 3 >>>>> Date: Mon, 5 Dec 2011 15:46:02 +0100 >>>>> From: Fabien Lafont<lafont.fab...@gmail.com> >>>>> Subject: Re: [Matplotlib-users] [ploting data] Live data >>>>> Cc:matplotlib-users@lists.sourceforge.net >>>>> Message-ID: >>>>> >>>>> <CAC9H_cjrgQBE6e6+jzZHyfYHonTeAg0XwU7c_2G-hu=s+z7...@mail.gmail.com> >>>>> Content-Type: text/plain; charset=ISO-8859-1 >>>>> >>>>> Thx all for your remarks, >>>>> >>>>> I can't understand why this code works (when I use the timer method): >>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> All the data continuously generated in your IT infrastructure >>>> contains a definitive record of customers, application performance, >>>> security threats, fraudulent activity, and more. Splunk takes this >>>> data and makes sense of it. IT sense. And common sense. >>>> http://p.sf.net/sfu/splunk-novd2d >>>> _______________________________________________ >>>> Matplotlib-users mailing list >>>> Matplotlib-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> ------------------------------------------------------------------------------ Systems Optimization Self Assessment Improve efficiency and utilization of IT resources. Drive out cost and improve service delivery. Take 5 minutes to use this Systems Optimization Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users