У меня возникла проблема, когда я разрабатывал программу, которая может одновременно получать содержание с разных сайтов (сейчас это в основном получение определения слова из двух или более онлайн-словарей).
Я использовал 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'