JRazor
@JRazor
Senior StarkOverFlow Programmer

PyQt4: слоты и сигналы. Как передать сигнал из Scrapy в PyQt?

Уже задавал вопрос, но...так и не решил ничего. Разобрался с сигналами и слотами, но информацию так передать и не могу. Возможно из-за другого потока (что для сигналов не должно быть помехой), а возможно из-за кривых рук. У меня был следующий код:

# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui

class SignalClass(QtCore.QObject):
    signal = QtCore.pyqtSignal(object)

    def __init__(self):
        QtCore.QObject.__init__(self)

    def send(self, text):
        self.signal.emit(text)

# Часть, которая будет выводить текст
@QtCore.pyqtSlot(object)
def output(text):
    print text

# Часть, которая будет передавать текст
bag = SignalClass()
bag.signal.connect(output)
bag.send(2) # Тут передаем значение функции output


Так все работает. Распределяю все по PyQt и Scrapy - в QLabel ничего не передается. Есть идеи?
  • Вопрос задан
  • 3522 просмотра
Пригласить эксперта
Ответы на вопрос 1
@sozforex
Программист, Python
Если у Вас в одном процессе (но, к примеру в разных трэдах) запущены реакторы (евент-лупы) pyqt4 и twisted (используется в scrapy), то эти реакторы не будут отпускать GIL => приложение не будет работать или будет работать неожиданным образом. В одном питоновском процессе не должно быть больше одного реактора.
stackoverflow.com/questions/15087746/qt4reactor-sc...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы