擅长:python、mysql、java
<p>你对插槽/信号的工作原理有错误的理解。<code>connect</code>的参数必须是一个<em>函数</em>,该函数接受所连接到的信号发出的任何信号。在本例中,看起来您是从一个按钮连接到<code>clicked</code>信号(它不发出值)。因此,您需要将要调用的函数包装在一个不带参数的函数中。一种简单的方法是将函数包装在<code>lambda</code>函数中:</p>
<pre><code>self.Valve_ON.clicked.connect(lmabda x=6008: self.ValveControl.IO_On(x))
self.Valve_OFF.clicked.connect(lambda x=self.ValveControl.Chan0: self.ValveControl.IO_Off(x))
</code></pre>
<p>它创建带有一个可选参数(默认值为所需值)的函数,因此它将作为无参数槽使用。在</p>
<p>使用默认参数将值绑定到中似乎有些奇怪,但它可以防止闭包出现一些奇怪的问题(请参见<a href="https://stackoverflow.com/questions/13355233/python-lambda-closure-scoping">Python lambda closure scoping</a>)</p>
<p>另一种方法是使用<a href="http://docs.python.org/2/library/functools.html#functools.partial" rel="nofollow noreferrer">^{<cd4>}</a>包装函数。在</p>