Du kommst vermutlich aus der Embedded Entwicklung. Mit GUI Frameworks,
wie tkinter funktioniert das aber anders.
Normalerweise setzt man seine GUI Strukturen auf und startet dann den
mainloop. Dort läuft dann alles Eventbasiert (z.B. Button Click, Timer,
Events aus externen Threads). Der Aufruf von mainloop kehrt erst wieder
zurück, wenn man die GUI schließt.
In deinem Fall wird die for Schleife irgenwann fertig, weil read()
nichts mehr zu lesen hat. Danach kommst du in den mainloop und siehst
das Fenster. Würde read() nicht zu Ende kommen, dann würde bei dir nie
ein GUI erscheinen.
Wenn du ganz neu bist, würde ich erstmal was simples machen. Also z.B.
einen Button, den man anklickt und dann wird irgendwo ein Text geändert.
Wenn du da verstanden hast, wie das Konzept funktioniert, dann kannst du
es mit dem Com Port versuchen. Dazu gibt es dann mehrere Möglichkeiten:
- Pollen der Werte mit Timer aus der GUI
- Externer Thread, der neue COM Werte abholt und den Wert als Event an
die GUI schickt.
- COM Bibliothek, die das abstrahiert und in tkinter eingebunden werden
kann
Was du auf keinen Fall tun solltest! In eine GUI Funktion in einer
Schleife die Serielle Schnittstelle abfragen. Während dessen werden
keine anderen GUI Events ausgeführt und die GUI ist blockiert. In
Windows wird das Fenster dann irgendwann grau und reagiert nicht mehr.