@kamilm

Не могу обратиться к функции из другого потока.Что делать?

У меня есть класс Ui_Dialog в котором есть QTextEdit,
есть функция которая включает поток с ботом
self.Bot_Thread_instance = Bot_Thread(mainwindow=self)
self.On.clicked.connect(self.launch)
def launch(self):
    self.Bot_Thread_instance.start()

в коде ниже функция бота в другом потоке,в классе Bot_Thread(QtCore.QThread)
def run(self):
   Bot = vk.ChatBot(token = '', version_API = 5.101, group_id = '')
   Server = Bot.Auth()
   LongPoll = Bot.Listen()
   person = Bot.GetUserInfo()
   Server['ts'] = LongPoll['ts']
   while True:
        LongPoll = Bot.Listen()
        updates = LongPoll['updates']
        if updates: 
            for element in updates:
                action_code = element[0]
                if action_code == 4:
                    summands = []  
                    flag = element[2]
                    for number in [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 65536]:  
                        if flag & number:  
                            summands.append(number)
                    if 2 not in summands:
                        timestamp = element[4]
                        value = datetime.datetime.fromtimestamp(timestamp)
                        log = 'Сообщение от пользователя: %s\nid пользователя: %s\nДата отправки: %s\n' %(element[6], element[3], value.strftime("%Y-%m-%d %H.%M.%S"))
                        ui.Log.setText(log)
        Server['ts'] = LongPoll['ts']

мне надо чтобы log выводился в QTextEdit который находится в другом потоке,в классе Ui_Dialog.
на всякий случай ui = Ui_Dialog()
Ошибка
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QTextDocument(0x13402b01610), parent's thread is QThread(0x13402b00690), current thread is Bot_Thread(0x13402b02030)
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
tsarevfs
@tsarevfs
C++ developer
C UI в Qt можно работать только из одного потока. Чтобы безопасно общаться с UI из других потоков используйте сигналы.
https://stackoverflow.com/a/638693/1762922
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 100 000 до 150 000 руб.
FirstVDS Иркутск
от 50 000 до 80 000 руб.
от 150 000 до 200 000 руб.
13 нояб. 2019, в 17:18
200 руб./в час
13 нояб. 2019, в 16:17
5000 руб./за проект