Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
6 / 5 / 1
Регистрация: 30.07.2014
Сообщений: 56

Как вывести в QTextEdit данные по WebSocket

18.02.2019, 10:46. Показов 3996. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Как вывести в QTextEdit данные по WebSocket?
Использую websocket-client. Стрим запускаю в параллельном процессе через QThread, где генерирую сигналы в виде текста и пытаюсь вывести в QTextEdit. Похоже stream.log_signal.emit() не подходит, но на on_message() не могу передать self. Что делаю не так? Возможно есть другие реализации websocket?
Код такой:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# -*- coding: utf8 -*-
from PyQt5 import QtCore, QtWidgets
import websocket
 
class stream(QtCore.QThread):
    log_signal = QtCore.pyqtSignal(str)
    def __init__(self, parent = None):
        QtCore.QThread.__init__(self, parent)
 
    def on_message(ws, message):
        print(message)
        stream.log_signal.emit(message)
    def on_error(ws, error):
        print(error)
        stream.log_signal.emit(error)
    def on_close(ws):
        print('Close')
        stream.log_signal.emit('Close')
    def on_open(ws):
        print('Open')
        stream.log_signal.emit('Open')
 
    def run(self):
        self.log_signal.emit('Run')
        self.ws = websocket.WebSocketApp('wss://stream.binance.com:9443/ws/btcusdt@kline_1m',
                                    on_message= self.on_message,
                                    on_error= self.on_error,
                                    on_close= self.on_close)
        self.ws.on_open = self.on_open
        self.ws.run_forever()
 
class myWin(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.resize(500, 200)
        self.textEdit = QtWidgets.QTextEdit(self)
        self.vbox = QtWidgets.QVBoxLayout()
        self.vbox.addWidget(self.textEdit)
        self.setLayout(self.vbox)
 
        self.stream = stream()
        self.stream.log_signal.connect(self.print_log, QtCore.Qt.QueuedConnection)
        self.stream.start()
 
    def print_log(self, text):
        self.textEdit.append(text)
 
if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = myWin()
    window.show()
    sys.exit(app.exec_())
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2019, 10:46
Ответы с готовыми решениями:

Как с консоли браузера приходящие данные вывести на страницу через websocket клиент?
День добрый. Подскажите пожалуйста, как с консоли браузера приходящие данные вывести на страницу через вебсокет клиент? Приходящие...

Как из QTextEdit записать данные в файл?
Здравствуйте, нужна помощь. В приложении необходимо записать в файл (желательно xls) данные пользователя из двух QTextEditor. Через...

Как получить данные и обработать с нескольких websocket
let ws = new WebSocket(); let ws2 = new WebSocket(); ws.onmessage(event)=>{ console.log(event.data) } подключаюсь к...

2
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
18.02.2019, 12:04
Лучший ответ Сообщение было отмечено ardans как решение

Решение

Цитата Сообщение от ardans Посмотреть сообщение
def on_message(ws, message):
* * * * print(message)
* * * * stream.log_signal.emit(message)
навскидку - в ините надо self писать
и ws вы передаете в параметрах и не используете
Python
1
2
3
def on_message(self, message):
* * * * print(message)
* * * * self.log_signal.emit(message)
Добавлено через 21 минуту
УМВР
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from PyQt5 import QtCore, QtWidgets
from time import sleep
 
class stream(QtCore.QThread):
    log_signal = QtCore.pyqtSignal(str)
    def __init__(self):
        super().__init__()
 
    def on_message(self, message):
        self.log_signal.emit(message)
 
    def run(self):
        self.on_message('Run')
        for i in range(10):
            sleep(1)
            self.on_message('message:' + str(i))
        self.sleep(1)
        self.on_message('Quit')
        self.quit()
 
class myWin(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.textEdit = QtWidgets.QTextEdit(self)
        self.vbox = QtWidgets.QVBoxLayout()
        self.vbox.addWidget(self.textEdit)
        self.setLayout(self.vbox)
 
        self.stream = stream()
        self.stream.log_signal.connect(self.print_log)
        self.stream.start()
 
    def print_log(self, text):
        self.textEdit.append(text)
 
if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication([])
    w = myWin()
    w.resize(400, 300)
    w.show()
    sys.exit(app.exec_())
1
6 / 5 / 1
Регистрация: 30.07.2014
Сообщений: 56
18.02.2019, 12:56  [ТС]
Действительно, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2019, 12:56
Помогаю со студенческими работами здесь

Как вывести char в QTextEdit?
Изините, не подскажите, как мне в QTextEdit вывести символ char?

React + websocket как поднять данные из метода сокета
Здравствуйте. Есть код на Js React. Так же используются вебсокеты. У сокетов есть метод onmessage. И нужно, что бы в это методе данные...

Как подключиться и получить данные с websocket сайта exmo.me?
Здравствуйте. Сайт exmo.me отдает данные об изменениях валют по websocket'у "wss://ws.exmoney.com/connection/websocket". Это я...

Как вывести текст из QTextEdit в переменную?
Здравствуйте! Пытаюсь понять как вывести текст из редактора в переменную, окно программы запускается, но после нажатия кнопки (вызова...

Как в QTextEdit вывести всё текущые процессы?
Привет. Как можно в QTextEdit вывести всё текущые процессы? Платформа: линукс, Федора 16 Работаю в ручную и компилирую с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru