PyQt4. Объект QtCore.pyqtSignal не имеет никакого атрибута 'подключение'

У меня есть проблемы с пользовательским сигналом в классе, который я сделал.

Соответствующие нормы:

self.parse_triggered = QtCore.pyqtSignal()

def parseFile(self):
    self.emit(self.parse_triggered)

Оба из тех принадлежат классу: RefreshWidget. В его родительском классе я имею:

self.refreshWidget.parse_triggered.connect(self.tabWidget.giveTabsData())

Когда я пытаюсь запустить программу, я получаю ошибку:

AttributeError: 'PyQt4.QtCore.pyqtSignal' object has no attribute 'connect'

Помощь? Заранее спасибо.

52
задан Dane Larsen 3 June 2010 в 11:42
поделиться

2 ответа

У меня была та же самая проблема, что и у вас.

Попробуйте переместить

self.parse_triggered = QtCore.pyqtSignal()

из конструктора, но внутрь объявления класса. Поэтому вместо того, чтобы это выглядело так:

class Worker(QtCore.QThread):
    def __init__(self, parent = None):
        super(Worker, self).__init__(parent)

        self.parse_triggered = QtCore.pyqtSignal()

Это должно выглядеть так:

class Worker(QtCore.QThread):
    parse_triggered = QtCore.pyqtSignal()

    def __init__(self, parent = None):
        super(Worker, self).__init__(parent)

Возможно, это совсем не то, что вы ищете, но это сработало для меня. Я все равно переключился на сигналы старого стиля, потому что я не нашел способа в сигналах нового стиля иметь неопределенное количество или тип параметров.

101
ответ дан 7 November 2019 в 08:59
поделиться

Почему вы подключаетесь напрямую к сигналу, а можете self.connect (виджет, СИГНАЛ ('parse_triggered ()'), слушатель.listen_method) ?

где self - это, например, сама форма и может быть тем же, что и listener

-1
ответ дан 7 November 2019 в 08:59
поделиться
Другие вопросы по тегам:

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