[PyQt] Re: processEvents on QlistWidget operations does nothing
Andreas Pakulat
apaku at gmx.de
Mon Jan 28 09:53:57 GMT 2008
On 28.01.08 09:58:20, P. Mathé wrote:
> Thank you Scott for your answer, but unnless I didn'y understand you correctly, it does not work : the timer singleshot is fired only after the loop ends.
Unfortunately you didn't understand correctly. What Scott meant was
that the slot connected to the singleshot should download the stuff with
urllib, then update the listwidget and then return control to the event
loop (and if jours is not empty schedule another singleshot timer).
Something like this should work:
class radioProgDialog(QDialog, radioUi):
def __init__(self):
QDialog.__init__(self)
# Set up the user interface
self.setupUi(self)
self.connect(self.btnGo,SIGNAL("clicked()"),self.extraire)
#
def updateGui(self):
d=self.d
jour = self.jours.last()
self.jours.removeAll( jour )
next_url=url % jour
p=urllib.urlopen(next_url).read()
self.d=DateFromTicks(jour)
logText=u'téléchargement %02d/%02d/%d' % (d.day,d.month,d.year)
self.log.insertItem(0, QListWidgetItem(logText))
self.progressBar.setValue(self.progressBar.value() + 1)
print logText
if( self.jours.isEmpty() ):
QTimer.singleShot(0, self.updateGui)
def extraire(self):
self.url='http://www.radiofrance.fr/francevivace/prog/index.php?time=%u'
#
self.jours=[(int((now() + (j * oneDay)).ticks())) for j in range(0, 4)]
self.progressBar.setMaximum(len(jours))
self.progressBar.setValue(0)
print 'maxi', self.progressBar.maximum()
QTimer.singleShot(0, self.updateGui)
print 'fini Vivace'
Andreas
--
Tomorrow will be cancelled due to lack of interest.
More information about the PyQt
mailing list