Search code examples
pythonqteventspyqtqlcdnumber

Update LCD Number countdown


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.


Solution

  • 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