циклом while true? А то он как-то с ругатеьством просто вываливается, что интерфейса к которому он обращается уже нет)
Вроде в ткинтере while True не используется, там mainloop() пишешь и всё
У меня интерфейс с фоновым процессом, фоновый процесс сделан через threading, собственно где реализован фоновый процесс с переодическим обновлением части интерфейса, не очень понял к чему тут сейчас о mainloop
Так же как и в любой другой многопоточной программе. Выставляешь флаг потоку, который он периодически проверяет, тот проверяет его и завершается, в другом потоке ждешь его завершения.
Может сделать там не while True, а while not stopped, а на закрытие окна повесить stopped = True? Но не уверен что в многопоточном нормально сработает
т.е. в моём случае смотреть статус мейнлупа выходит?
Чо блин?
Ну собственно так это и работает в многопоточном коде. Ты описал примерно то же что и я.
А в каком смысле в конце "ждёшь его завершения"? Мейнлуп должен по событию закрытия окна не только выставлять этот флаг но и ожидать фоновый поток? (И как конкретно это сделать и зачем собственно нужно его ожидать)
Ждать чтобы он корректно завершился. Иначе у тебя есть два варианта: 1. Если поток по каким-то причинам не успел завершиться, но у него daemon=True, он вываливается в случайном месте, со всеми вытекающими последствиями. 2. Если поток использует разделяемое состояние и обращается к объектам, которые могли быть инвалидированы завершением основного потока, получишь закономерный исход. А ждать поток нужно при помощи thread.join
В общем разобрался, сделал, спасибо!
Обсуждают сегодня