Why is PyQt connect() syntax so verbose?

后端 未结 3 1938
庸人自扰
庸人自扰 2020-11-30 09:22

I\'m just learning PyQt and looking at the Signals and Slots mechanism. I\'m a bit baffled by the verbose syntax. Why do we have:

self.connect(dial, SIGNAL(\         


        
相关标签:
3条回答
  • 2020-11-30 09:59

    You can use PyQt's new style signals which are less verbose:

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

    Becomes:

    dial.valueChanged.connect(spinbox.setValue)
    
    0 讨论(0)
  • 2020-11-30 10:04

    Luper's answer is much better than this one, but for the sake of completeness...

    The ugly "old style" syntax is an anachronism from the C++ world - just look at the syntax those guys have to work with! Yucky...

    0 讨论(0)
  • 2020-11-30 10:14

    An even shorter way is to assign the signal name to the function in the keyword arguments of the constructor e.g. QDial(valueChanged=spinbox.setValue). PyQt will automatically connect the valueChanged() signal to spinbox.setValue().

    0 讨论(0)
提交回复
热议问题