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

时间:2010-10-27 09:03:45

标签: python qt qt4 pyqt pyqt4

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

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

我更愿意写下以下内容:

self.connect(dial.valueChanged, spinbox.setValue)

有谁能告诉我为什么connect()语法需要如此明确/详细?

3 个答案:

答案 0 :(得分:28)

你可以使用更简洁的PyQt的new style signals

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

变为:

dial.valueChanged.connect(spinbox.setValue)

答案 1 :(得分:2)

Luper的回答比这个要好得多,但为了完整起见......

丑陋的“旧式”语法是来自C++世界的时代错误 - 只需看看这些人必须使用的语法! Yucky...

答案 2 :(得分:1)

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