Форум сайта python.su
Доброго времени суток. Есть код:
def main_start(self): print "MAIN FUNCTION START" th1 = threading.Thread(target=self.clerk, name="Thread_Clerk", args=[]) print "[MainStart]: *** starting Thread_Clerk ***" th1.start() def clerk(self): number = 0 total_clerk = self.spinBox.value() text_clerk = u"" print total_clerk while number < total_clerk: text_clerk+=u"Клерк #"+str(number+1)+u" |\t| Заявка # |\t Время выполнения: \n" number+=1 print text_clerk self.change_text1(unicode(text_clerk)) def change_text1(self, text): self.textEdit.setText(unicode(text))
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QTextDocument(0x28157f0), patent's thread is QThread(0x1e218e0), ent thread is QThread(0x2815840)
Отредактировано xMORRISONx (Фев. 8, 2014 15:32:17)
Офлайн
http://python.su/forum/topic/3956/?page=1#post-26424
Офлайн
RodegastТо есть, я делаю еще один класс специально для потоков?
http://python.su/forum/topic/3956/?page=1#post-26424
Офлайн
def main_start(self): print "MAIN FUNCTION START" self.textEdit.setText(u"Start") self.thread = THR() self.connect(self.thread, QtCore.SIGNAL("finished()"), self, QtCore.SLOT("threadFinished()")) # приконектился на сигнал завершения потока... self.thread.start() class THR(QtCore.QThread): def run(self): number = 0 total_clerk = self.spinBox.value() text_clerk = u"" print total_clerk while number < total_clerk: text_clerk+=u"| Клерк #"+str(number+1)+u" | Заявка # | Время выполнения: |\n" number+=1 text_clerk = text_clerk.rstrip() print text_clerk
AttributeError: 'Ui_MainWindow' object has no attribute 'connect'
Отредактировано xMORRISONx (Фев. 8, 2014 16:55:54)
Офлайн
Если меняю на QtCore.QObject,
ну как тут
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.main_start)
Traceback (most recent call last):
File "", line 204, in main_start
QtCore.QObject.connect(self.thread, QtCore.SIGNAL("finished()"), self, QtCor
e.SLOT("threadFinished()"))
TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoC
onnection): argument 3 has unexpected type 'Ui_MainWindow'
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnecti
on): argument 3 has unexpected type 'Ui_MainWindow'
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection
): argument 2 has unexpected type 'str'
Отредактировано xMORRISONx (Фев. 8, 2014 17:11:23)
Офлайн
Если сделать так
self.thread = THR("Clark") self.connect(self.thread, QtCore.SIGNAL("finished()"), self, QtCore.SLOT("threadFinished()")) self.thread.start()
self.thread = THR("Clark")
TypeError: QThread(QObject parent=None): argument 1 has unexpected type 'str'
Офлайн
Переделал
def main_start(self): print "MAIN FUNCTION START" self.textEdit.setText(u"Start") self.initializing() def initializing(self): self.s1 = myQThread(self) self.s1.something_ready.connect(self.clerk_add) self.s1.start() def clerk_add(self): number = 0 total_clerk = self.spinBox.value() text_clerk = u"" print total_clerk while number < total_clerk: text_clerk+=u"| Клерк #"+str(number+1)+u" | Заявка # | Время выполнения: |\n" number+=1 text_clerk = text_clerk.rstrip() print text_clerk self.textEdit.setText(text_clerk) class myQThread(QtCore.QThread): something_ready = QtCore.pyqtSignal(object) def __init__(self): QtCore.QThread.__init__(self) def run(self): some_object = create_something() self.something_ready.emit(some_object)
self.s1 = myQThread(self) TypeError: __init__() takes exactly 1 argument (2 given)
Офлайн
Вообще не получается в поток кинуть…
есть идеи?
Офлайн
xMORRISONx
Вообще не получается в поток кинуть…есть идеи?
self.s1 = myQThread()
Офлайн