Update LCD Number countdown

user5559416 picture user5559416 · Nov 21, 2015 · Viewed 10.7k times · Source

I'm very new to Python and I have made a very simple countdown timer. The GUI was created in Qt Designer. There is a spin box for input of seconds, a start button and an LCD number counter. The counter counts down fine using the code below:

     def start_btn_clicked(self):
         x = self.Minute_spinBox.value()
         for i in xrange(x,0,-1):
             time.sleep(1)
             print (i)

So that I could see what was happening as I played around with it, I added the print instruction so that it shows the countdown in the Python console as it runs. I then thought I could maybe quite easily have the LCD number display the countdown with something like:

    self.lcdNumber.display(i)("%SS")

But no matter what I try, I cant get it to show. With the line above, I get the first number displayed, but then I get an error saying:

    self.lcdNumber.display(i)("%SS")
    TypeError: 'NoneType' object is not callable

I have tried so many variations that I no longer know where I started and here was me thinking it would be simple. I'd love to know why I cant get it to display the countdown.

Answer

user5559416 picture user5559416 · Nov 23, 2015

Just adding one line of code to my original code will allow the lcdNumber to display the count...

def start_btn_clicked(self):
     x = self.Minute_spinBox.value()
     for i in xrange(x,0,-1):
         time.sleep(1)
         app.processEvents() # just this one line allows display of 'i' 
         self.lcdNumber.display(i)`

And works perfectly