我正在学习PyQT和多线程,我想在这里需要帮助。在我的代码中,我有Tool
一个class和一个thread TaskThread
。从线程中,我调用一个函数dummy_function
,该函数执行进度条在GUI中显示的过程。
当dummy_function
完成后,我想在GUI打印一条消息,通过调用self.outputText.setText("Hello")
。但是,出现以下错误:
AttributeError:'TaskThread'对象没有属性'outputText'
我尝试的第一件事是将以下行添加到我的onStart函数中:
...
self.myLongTask.output_dt = self.outputText
...
然后,在中TaskThread,我dummy_function通过以下方式更改调用:
...
dummy_function(self, start_datetime_unix, end_datetime_unix, self.output_dt)
...
最后,我通过添加以下新参数来更改我的dummy_function:
def dummy_function(self, start_datetime_unix, end_datetime_unix, output_text):
# Dummy function, just to simulate a task. It takes parameters just for testing.
result = start_datetime_unix * end_datetime_unix
# Pre-steps for mapping from one range to other (progress-bar)
OldMax = 99999
OldMin = 1
NewMax = 100
NewMin = 1
OldRange = (OldMax - OldMin)
NewRange = (NewMax - NewMin)
u = 1
for i in range (OldMax):
u = i*2
OldValue = i
print OldValue
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
print "NEW VALUE: ", NewValue
self.emit(QtCore.SIGNAL('CPU_VALUE'), NewValue)
output_text.setText("Hello")
现在,到达终点时,程序将关闭,并显示以下错误:
QObject:无法为处于不同线程中的父级创建子级。(父母是QTextDocument(0xf13a60),父母的线程是QThread(0xc6f180),当前线程是TaskThread(0xee0740)
为了尝试该程序,我升级了GUInterface,因此如有必要,您可以尝试一下。
收到一只叮咚
相关分类