Actualización dinámica de la ventana Tkinter basada en datos en serie

Estoy intentando escribir un programa que obtiene datos de una conexión de puerto serie y actualiza automáticamente la ventana de Tkinter en tiempo real según esos datos.

Intenté crear un hilo separado para la ventana que periódicamente obtiene los datos actuales del hilo principal y actualiza la ventana, de esta manera:

<code>serialdata = []
data = True

class SensorThread(threading.Thread):
    def run(self):
        serial = serial.Serial('dev/tty.usbmodem1d11', 9600)
        try:
            while True:
                serialdata.append(serial.readline())
        except KeyboardInterrupt:
            serial.close()
            exit()

class GuiThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.root = Tk()
        self.lbl = Label(self.root, text="")

    def run(self):
        self.lbl(pack)
        self.lbl.after(1000, self.updateGUI)
        self.root.mainloop()

    def updateGUI(self):
        msg = "Data is True" if data else "Data is False"
        self.lbl["text"] = msg
        self.root.update()
        self.lbl.after(1000, self.updateGUI)

if __name == "__main__":
    SensorThread().start()
    GuiThread().start()

    try:
        while True:
            # A bunch of analysis that sets either data = True or data = False based on serialdata
    except KeyboardInterrupt:
        exit()
</code>

Ejecutarlo me da este error:

Excepción en el hilo Thread-2: Traceback (última llamada más reciente): archivo "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", línea 522, en __bootstrap_inner self. run () Archivo "analysis.py", línea 52, en run self.lbl1.pack () Archivo "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter .py ", línea 1764, en pack_configure + self._options (cnf, kw)) RuntimeError: el hilo principal no está en el bucle principal

Cuando busco este error en Google, casi siempre recibo publicaciones en las que las personas intentan interactuar con la ventana desde dos hilos diferentes, pero no creo que lo esté haciendo. ¿Algunas ideas? ¡Muchas gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta