1. import gtk, gobject, threading, time
  2.  
  3. gobject.threads_init()
  4.  
  5. class T(threading.Thread):
  6.     pause = threading.Event()
  7.     stop = False
  8.  
  9.     def start(self, *args):
  10.         super(T, self).start()
  11.  
  12.     def run(self):
  13.         while not self.stop:
  14.             self.pause.wait()
  15.             gobject.idle_add(self.rungui)
  16.             time.sleep(0.1)
  17.  
  18.     def rungui(self):
  19.         print "printed"
  20.  
  21. class Start:
  22.    
  23.     def toggle_thread(self, *args):
  24.         thread = T()
  25.         if not thread.is_alive():
  26.             thread.start()
  27.             thread.pause.set()
  28.             self.button.set_label('Pause Thread')
  29.             return
  30.  
  31.         if thread.pause.is_set():
  32.             thread.pause.clear()
  33.             self.button.set_label('Resume Thread')
  34.         else:
  35.             thread.pause.set()
  36.             self.button.set_label('Pause Thread')
  37.    
  38.     def __init__(self):
  39.         thread = T()
  40.         window = gtk.Window()
  41.         self.button = gtk.ToggleButton('Start Thread')
  42.         self.button.connect('toggled', self.toggle_thread, None)
  43.         window.add(self.button)
  44.         self.button.show()
  45.         window.show()
  46.        
  47.     def main(self):
  48.         gtk.main()
  49.                
  50. if __name__ == "__main__":
  51.     start = Start()
  52.     start.main()