@Ivanzolo2001

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

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

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

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час