[已解决] PyQt5 Qthread属性错误,调用self.somelist

问题描述 投票:0回答:1

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

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

我了解归位错误是非常基本的事情

在我的主

@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()吗?


我先更改了self.sig_1.emit(input5),然后更改了self.Worferd_1.start()。看起来工作正常。有人知道为什么吗?

python pyqt5 qthread
1个回答
0
投票
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...
© www.soinside.com 2019 - 2024. All rights reserved.