tylko program przestawał działać
Tak, bo zatrzymałeś pętlę zdarzeń.
Tak długo jak ten kod się wykonuje, nic innego na tym wątku nie może się wykonać - w tym pętla zdarzań, więc okno nie ma jak odpowiadać na zdarzenia.
Musisz albo:
- uczynić tą funkcję asynchroniczną (async/await) z przerwami, tak, że jej kod będzie się wykonywać naprzemiennie z pętlą zdarzeń,
- zamiast ręcznej pętli, podpiąć swój kod do timera (a kliknięcie buttona tylko włączy timer)
- wykonywać to na wątku (ale to też trochę komplikacji dodaje)