Otro ejemplo del uso de threads con gtk, compare con el otro ejemplo que utiliza colas

import time
import random
import threading

import gtk
import gtk.gdk


texts = ['eggs', 'spam', 'pyar', 'gtk']

class molesto(threading.Thread):
    '''un thread que quiere molestar el main thread'''

    def __init__(self, label):
        threading.Thread.__init__(self)
        self.setDaemon(True)
        self.label = label

    def run(self):
        '''metodo principal del thread, duerme un tiempo aleatorio y despues
        cambia el Label'''

        while True:
            time.sleep(random.random() * 5)
            texto = self.getName() + ' ' + random.choice(texts)

            gtk.gdk.threads_enter()
            # zona critica de gtk
            print self.getName(), 'escribiendo', texto
            self.label.set_text(texto)
            gtk.gdk.threads_leave()

class ventana(gtk.Window):
    '''ventana con un label, ninguna locura'''

    def __init__(self):
        gtk.Window.__init__(self)
        self.set_default_size(640, 480)
        self.set_title('gtk con threads')
        self.label = gtk.Label('')
        self.add(self.label)
        self.label.show()

if __name__ == '__main__':
    gtk.gdk.threads_init()
    ventana = ventana()
    ventana.show()
    threads = [molesto(ventana.label) for x in range(10)]
    for thread in threads:
        thread.start()
    gtk.main()