title: Label in PyQt4 GUI not updating with every loop of FOR loop
body: <p>I'm having a problem, where I wish to run several command line functions from a python program using a GUI. I don't know if my problem is specific to <strong>PyQt4</strong> or if it has to do with my bad use of python code. </p>
  
  <p>What I wish to do is have a label on my GUI change its text value to inform the user which command is being executed. My problem however, arises when I run several commands using a <strong>for</strong> loop. I would like the label to update itself with every loop, however, the program is not updating the GUI label with every loop, instead, it only updates itself once the <em>entire</em> <strong>for</strong> loop is completed, and displays only the last command that was executed. </p>
  
  <p>I am using PyQt4 for my GUI environment. And I have established that the text variable for the label is indeed being updated with every loop, but, it is not actually showing up visually in the GUI. </p>
  
  <p>Is there a way for me to force the label to update itself? I have tried the <strong>update()</strong> and <strong>repaint()</strong> methods within the loop, but they don't make any difference. </p>
  
  <p>I would really appreciate any help.
  Thank you.</p>
  
  <p>Ronny.</p>
  
  <p>Here is the code I am using:</p>
  
  <pre><code># -*- coding: utf-8 -*-
  import sys, os
  from PyQt4 import QtGui, QtCore
  Gui = QtGui
  Core = QtCore
  
  # ================================================== CREATE WINDOW OBJECT CLASS
  class Win(Gui.QWidget):
      def __init__(self, parent = None):
          Gui.QWidget.__init__(self, parent)
  
          # --------------------------------------------------- SETUP PLAY BUTTON
          self.but1 = Gui.QPushButton("Run Commands",self)
          self.but1.setGeometry(10,10, 200, 100)
  
          # -------------------------------------------------------- SETUP LABELS
          self.label1 = Gui.QLabel("No Commands running", self)
          self.label1.move(10, 120)
  
          # ------------------------------------------------------- SETUP ACTIONS
          self.connect(self.but1, Core.SIGNAL("clicked()"), runCommands)
  
  
  # =======================================================  RUN COMMAND FUNCTION
  def runCommands():
      for i in commands:
          win.label1.setText(i)       # Make label display the command being run
          print win.label1.text()     # This shows that the value is actually
                                      # changing with every loop, but its just not
                                      # being reflected in the GUI label
          os.system(i)
  
  # ======================================================================== MAIN
  
  # ------------------------------------------------------  THE TERMINAL COMMANDS
  com1 = "espeak 'senntence 1'"
  com2 = "espeak 'senntence 2'"
  com3 = "espeak 'senntence 3'"
  com4 = "espeak 'senntence 4'"
  com5 = "espeak 'senntence 5'"
  commands = (com1, com2, com3, com4, com5)
  
  # --------------------------------------------------- SETUP THE GUI ENVIRONMENT
  app = Gui.QApplication(sys.argv)
  win = Win()
  win.show()
  
  sys.exit(app.exec_())
  </code></pre>