@Ivanzolo2001

Mожно ли связываться с родительским потоком из дочернего(threading)?

Можно ли в дочернем потоке обращаться к родительскому и вызывать что то уже из него? Зачем мне это? Решил я написать простенький чат с графическим интерфейсом. В качестве сервера использовал модуль socket, а для интерфейса взял pyqt. Еще я использовал threading.Для чего? Для того чтобы мой сервер принимал подключения в отдельном потоке, т.е был независимым. Когда сообщение приходило я добавлял к нему "\n", для того чтобы сделать перенос строки. После этого я просто выводил это сообщение в поле textEdit, предварительно отключив возможность менять текст в этом поле. НО. Мой интерфейс был в главном потоке, а задавал я текст из дочернего. Ну мне и вывелась ошибка о том, что так нельзя. Я решил это асинхронностью, но все же стало интересно, можно ли было просто из дочернего вызвать метод setText(для записи в текста в поле) и не париться с асинхронностью? Если да, то как?
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Многопоточность
Седой и строгий
Все библиотеки графического интерфейса не являются потокобезопасными, поэтому нельзя обращаться к компонентам интерфейса из потоков. В таких случаях потоки шлют сигналы главному потоку, а тот на основании этих сигналов выполняет действия с интерфейсом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы