Search code examples
pythonpyqtsignalspyqt4

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


I'm having issues with a custom signal in a class I made.

Relevant code:

self.parse_triggered = QtCore.pyqtSignal()

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

Both of those belong to the class: RefreshWidget. In its parent class I have:

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

When I try to run the program, I get the error:

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

Help? Thanks in advance.


Solution

  • I had the same exact problem as you.

    Try moving

    self.parse_triggered = QtCore.pyqtSignal()
    

    out of your constructor but inside your class declaration. So instead of it looking like this:

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

    It should look like this:

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

    This might not be at all what you are looking for, but it worked for me. I switched back to old-style signals anyways because I haven't found a way in new-style signals to have an undefined number or type of parameters.