Если у вас есть программа, основанная на событиях, общий поток программы такой:
while the-program-is-running:
wait-for-an-event
service-the-event
exit
Теперь давайте посмотрим, что происходит, когда service-the-event вызывает что-то с (потенциально) бесконечным циклом:
while the-program-is-running:
wait-for-an-event
while the-internet-is-on:
do-something
exit
Вы видите проблему? В худшем случае ваша программа может никогда больше не вызывать wait-for-a-event, потому что ваш цикл работает.
Помните: цикл обработки событий уже является бесконечным циклом, вам не нужно добавлять еще один бесконечный цикл внутри него. Вместо этого воспользуйтесь существующим циклом. Вы можете использовать wx.CallAfter или wx.CallLater для вызова метода, который вызовет вызов вашей функции на следующей итерации цикла событий.
Затем внутри своей функции вы снова вызываете wx.CallAfter или wx.CallLater , чтобы снова вызвать его на следующей итерации цикла событий.