Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Первая проблема — digits может использоваться не только этим потоком. Модуль simple_thread позволяет обойти эту проблему. Когда мы получаем атрибут, нам возвращается не ссылка на этот атрибут, а его копия. При этом, все действия происходят в контексте основного потока, и нам не надо беспокоиться об одновременном доступе к атрибуту из нескольких потоков.
В CPython такой проблемы нет — благодаря GIL в любой момент времени исполняеться только один поток. То есть можно не особо задумываясь обмениваться данными с стандартными python-объектами посредством атрибутов.
Такой код не совсем Qt-friendly. Намного более идиоматичный вариант — сделать свой поток с сигналом textChanged(str) и присоиденить его соответствующему слоту — setText с помощью Qt::QueuedConnection соединения. Кода это особо не прибавит, а читать это потом будет намного легче.
Кроме того если возникнет желание можно будет переписать такие потоки на С++.
PyQt: простая работа с потоками