我试图从rapid gui programming with python and qt
中学习PyQt
,目前正在学习Signals
和Slots
。
下面是我的一小段代码:
self.connect(self.dial, SIGNAL("valueChanged(int)"),self.spinbox.setValue) #1
self.connect(self.dial, SIGNAL("valueChanged(int)"),self.getValue_dial) #2
self.connect(self.spinbox, SIGNAL("valueChanged(int)"),self.dial.setValue)
self.connect(self.spinbox, SIGNAL("valueChanged(int)"),self.getValue_spinbox)
def getValue_dial(self):
print self.dial.value()
def getValue_spinbox(self):
print self.dial.value()
我在这里试图实现的是,一旦发出ValueChanged(int)
信号,立即调用2
插槽,即spinbox.setValue
和getValue_dial
作为dial
对象。
上述代码成功执行,没有任何错误,并且print
更改了相应的值。
现在我的问题是,上述方法适合于为一个信号调用多个时隙。?
能否将上述两个语句(1&2)合并为一个语句。
这是我的complete code的链接。
您可以使用列表在一条语句中连接两个插槽/函数:
你这样做很好。如果你有很多事情要做,你可以连接到一个新的函数,为你处理一切。
我注意到在连接的
getValue
函数中,您直接从对象获取值;您是否知道该值是作为带有valueChanged(int)
信号的参数传递的?如果将getValue
函数更改为接受其他参数,则不需要直接从对象获取值。当然,您可以一起取消getValue
函数,并在helper函数中发出print语句。另外,这取决于偏好,有一个new style for signals and slots可以使代码更容易阅读。它会改变
到上方的行
但对于最初的问题和您正在做的两件事,我只需要连接两次信号,而不是有一个helper函数。
是的,这是正确的方法。您可以将两个CONNECT语句合并成一个。
相关问题 更多 >
编程相关推荐