Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python

PyQt processEvents not processing

 

 

Python python RSS feed   Index | Next | Previous | View Threaded


pict100 at gmail

Nov 6, 2009, 8:12 PM

Post #1 of 3 (71 views)
Permalink
PyQt processEvents not processing

qt 4.5.3
pyqt 4.6.1
python 2.6

I have this QtTable widget which I want to refresh once about every 2
seconds with new data.

so I do :

def updateSchedule(self):
for j in range(0,10):
doUpdate()
QtCore.processEvents()
sleep(2)

unfortunately QT appears to wait until the for loop finishes
and only then paints the QtTable widget on the screen showing
only the latest updated result.

if I connect the doUpdate() to a Qtpushbutton widget and physically
click the pushbutton , everything is fine and the updates get shown on
every click.

What is the right way to simulate this pushbutton click so that
the table widget gets 'visibly' refreshed for every iteration of the
loop ?


Thanks
Db

--
http://mail.python.org/mailman/listinfo/python-list


david at boddie

Nov 7, 2009, 8:04 AM

Post #2 of 3 (58 views)
Permalink
Re: PyQt processEvents not processing [In reply to]

On Saturday 07 November 2009 05:12, DarkBlue wrote:

> qt 4.5.3
> pyqt 4.6.1
> python 2.6
>
> I have this QtTable widget which I want to refresh once about every 2
> seconds with new data.
>
> so I do :
>
> def updateSchedule(self):
> for j in range(0,10):
> doUpdate()
> QtCore.processEvents()
> sleep(2)
>
> unfortunately QT appears to wait until the for loop finishes
> and only then paints the QtTable widget on the screen showing
> only the latest updated result.

It's difficult to know exactly why this is without more context. Calling
the application's processEvents() method should give the user interface the
chance to update itself, but perhaps you need to explicitly call update()
on the QTableView or QTableWidget instance to ensure that it is refreshed.

An alternative way to do this is to use a timer to update the table every
two seconds.

David
--
http://mail.python.org/mailman/listinfo/python-list


pict100 at gmail

Nov 7, 2009, 6:16 PM

Post #3 of 3 (56 views)
Permalink
Re: PyQt processEvents not processing [In reply to]

On Nov 8, 12:04 am, David Boddie <da...@boddie.org.uk> wrote:
> On Saturday 07 November 2009 05:12, DarkBlue wrote:
>
>
>
> > qt 4.5.3
> > pyqt 4.6.1
> > python 2.6
>
> > I have this QtTable widget which I want to refresh once about every 2
> > seconds with new data.
>
> > so I do :
>
> >  def updateSchedule(self):
> >          for j in range(0,10):
> >                       doUpdate()
> >                       QtCore.processEvents()
> >                       sleep(2)
>
> >  unfortunately QT appears to wait until the for loop finishes
> >  and only then paints the QtTable widget on the screen showing
> >  only the latest updated result.
>
> It's difficult to know exactly why this is without more context. Calling
> the application's processEvents() method should give the user interface the
> chance to update itself, but perhaps you need to explicitly call update()
> on the QTableView or QTableWidget instance to ensure that it is refreshed.
>
> An alternative way to do this is to use a timer to update the table every
> two seconds.
>
> David


As per your suggestion I added a timer to the init part and now the
update works as expected , even without calls to processEvents.

self.myTimer = QtCore.QTimer(self)
QtCore.QObject.connect(self.myTimer,QtCore.SIGNAL("timeout()"),
self.doUpdate)
self.timerTime = 0
self.myTimer.start(2000)

Thanks
Db
--
http://mail.python.org/mailman/listinfo/python-list

Python python RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.