Ошибка атрибута PyQt5 Qthread, вызывающая self.somelist - PullRequest
0 голосов
/ 25 марта 2020

у меня несколько ниток. и очень длинный основной сценарий.

Я пробовал несколько решений от других, но безрезультатно.

Я понимаю, что ошибка приписывания очень важна c вещь

в моем основном

@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.sig_1.emit(input5) после self.Worferd_1.start()?


Я изменил oder self.sig_1.emit(input5) сначала, чем self.Worferd_1.start() после. кажется, работает нормально. кто-нибудь знает почему?

1 Ответ

1 голос
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)
...