1
我開發的程序可以同時從不同的網站獲取包含(現在基本上是從兩個或多個在線字典中檢索一個詞的定義),但我遇到了一個問題。PyQt5:在使用QObject和QThread時出現AttributeError
我用QObject和QThread來開發我的程序。一開始一切都很順利,但是當我試圖再次搜索並檢索另一個單詞時,我得到了2個AttributeError。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from gui import Ui_MainWindow
from PyQt5.QtCore import QObject, QThread, pyqtSignal
class Searcher(QObject):
signalUpdate=pyqtSignal(str, str)
def __init__(self, dictionary, word):
super(Searcher, self).__init__()
self.dictionary=dictionary
self.word=word
def run(self):
self.signalUpdate.emit(self.dictionary, self.word)
class MyMainWindow(QMainWindow, Ui_MainWindow, QObject):
signalSearch=pyqtSignal()
def __init__(self, parent=None):
super(MyMainWindow, self).__init__()
self.setupUi(self)
self.dictList=['Yahoo dictionary', 'Webster dictionary']
self.searchThreads=[QThread(), QThread()]
def click(self):
word=self.lineEdit.text()
self.searchers=[]
for dictionary in self.dictList:
self.searchers.append(Searcher(dictionary, word))
for index , searcher in enumerate(self.searchers):
searcher.signalUpdate.connect(self.updateGUI)
searcher.moveToThread(self.searchThreads[index])
self.searchThreads[index].start()
self.signalSearch.connect(searcher.run)
self.signalSearch.emit()
def updateGUI(self, dictionary, word):
print(dictionary+'['+word+']')
if __name__ == "__main__":
app = QApplication(sys.argv)
myapp = MyMainWindow()
myapp.show()
sys.exit(app.exec_())
我不知道該如何處理這個問題。有誰知道如何擺脫它?
Traceback (most recent call last):
Traceback (most recent call last):
File "C:\workspace\online-dictionary\main.py", line 22, in run
File "C:\workspace\online-dictionary\main.py", line 22, in run
self.signalUpdate.emit(self.dictionary, self.word)
self.signalUpdate.emit(self.dictionary, self.word)
AttributeError: 'NoneType' object has no attribute 'signalUpdate'
AttributeError: 'NoneType' object has no attribute 'signalUpdate'
可否請您提供完整的追蹤? – aIKid
我在帖子中添加了回溯。謝謝:) – dacapo1142