<p>您有以下错误:</p>
<ul>
<li><p>必须创建一个Calculs对象:<code>self.calculs = Calculs()</code></p></li>
<li><p>如果要使用Python的本机<code>threading</code>,那么使用<code>QThread</code>是没有意义的,有两个元素做了同样的操作,因此将<code>QThread</code>更改为<code>QObject</code>。</p></li>
<li><p>将信号连接到函数时,必须传递函数的名称,而不是计算的函数。</p></li>
</ul>
<p>不正确</p>
<pre><code>[...].finished.connect(self.getFinishThread())
</code></pre>
<p>对吧</p>
^{pr2}$
<ul>
<li><p><code>target</code>需要函数的名称,而不是计算的函数名。</p></li>
<li><p>如果不打算修改<code>Calculs</code>类的构造函数,则不必实现它。</p></li>
</ul>
<p>代码:</p>
<pre><code>class Test(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.pushButton.clicked.connect(self.Launch_Test)
def Launch_Test(self):
self.calculs = Calculs()
self.calculs.finished.connect(self.getFinishThread)
test_thread = threading.Thread(target = self.calculs.Calcul_Test)
test_thread.start()
def getFinishThread(self):
print('Good ! \n')
#os.system('pause')
class Calculs(QObject):
finished = pyqtSignal()
def Calcul_Test(self):
print('Test calcul\n')
self.finished.emit()
</code></pre>