PyQt5 Qthread 属性错误,调用self.somelist

PyQt5 Qthread attribut error, calling self.somelist

我有几个线程。和很长的主脚本。

我尝试了其他人的几种解决方案,但没有结果。

我明白归因错误是非常基本的事情

在我的主要

@pyqtSlot()
def save_usermade(self):
    user_id = self.lineEdit_4.text().strip()
    input5 = [user_id, and some more strings...]
    self.WorkerD_1 = Worker4_1()
    self.sig_1.connect(self.WorkerD_1.save_ad)
    self.WorkerD_1.start()
    self.sig_1.emit(input5)
    self.WorkerD_1.sig4_1_1.connect(self.append_table)

在我的线程中

class Worker4_1(QThread):
    sig4_1_1 = pyqtSignal(str)

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

    def save_ad(self, listD_1):
        self.adlist = listD_1        

    def run(self):
        print(self.adlit)
        userID = self.adlist[0]
        and some works to do...

我遇到这样的错误

Traceback (most recent call last):
File "C:\codes\MYPROJECT\Basic\Thread_w4_1.py", line 34, in run
    print(self.adlist)
AttributeError: 'Worker4_1' object has no attribute 'adlist'

有人知道为什么吗?

会不会是因为我在self.Worferd_1.start()之后做了self.sig_1.emit(input5)


我先改了 oder self.sig_1.emit(input5),然后改了 self.Worferd_1.start()。 它似乎工作正常。有人知道为什么吗?

class Worker4_1(QThread):
    sig4_1_1 = pyqtSignal(str)

    def __init__(self,adList, parent=None):#edited here
        QtCore.QThread.__init__(self, parent=parent)
        self.adList = adList


    def run(self):
        print(self.adlit)
        userID = self.adlist[0]
        and some works to do...

和主要的:

@pyqtSlot()
def save_usermade(self):
    user_id = self.lineEdit_4.text().strip()
    input5 = [user_id, and some more strings...]
    self.WorkerD_1 = Worker4_1(adList = input5)