Python 为什么PyQt connect()语法如此冗长?

Python 为什么PyQt connect()语法如此冗长?,python,qt,qt4,pyqt,pyqt4,Python,Qt,Qt4,Pyqt,Pyqt4,我只是在学习PyQt,看看信号和插槽机制。我对冗长的语法有点困惑。为什么我们有: self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue) 我更愿意写以下内容: self.connect(dial.valueChanged, spinbox.setValue) 有人能告诉我为什么connect()语法需要如此明确/详细吗 您可以使用不太详细的PyQt: self.connect(dial, SIGNAL("valueC

我只是在学习PyQt,看看信号和插槽机制。我对冗长的语法有点困惑。为什么我们有:

self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue)
我更愿意写以下内容:

self.connect(dial.valueChanged, spinbox.setValue)
有人能告诉我为什么connect()语法需要如此明确/详细吗

您可以使用不太详细的PyQt:

self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue)
变成:

dial.valueChanged.connect(spinbox.setValue)
的答案比这个好得多,但为了完整起见


丑陋的“旧式”语法在
C++
世界中是一个时代错误——看看那些家伙必须使用的语法吧

更短的方法是在构造函数的关键字参数中为函数指定信号名,例如
QDial(valueChanged=spinbox.setValue)
。PyQt将自动将
valueChanged()
信号连接到
spinbox.setValue()