为什么PyQt的connect()语法如此冗长?
我正在学习PyQt,最近在研究信号和槽的机制。对于这种写法我有点困惑,因为它看起来有点啰嗦。为什么我们要这样写:
self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue)
我更希望能这样写:
self.connect(dial.valueChanged, spinbox.setValue)
有没有人能告诉我,为什么connect()的写法需要这么详细和啰嗦呢?
3 个回答
1
还有一种更简单的方法,就是在构造函数的关键字参数中直接把信号名称赋值给函数,比如说 QDial(valueChanged=spinbox.setValue)
。这样,PyQt会自动把 valueChanged()
这个信号连接到 spinbox.setValue()
这个函数上。
28
你可以使用PyQt的新风格信号,这种方式更简洁:
self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue)
变成:
dial.valueChanged.connect(spinbox.setValue)