2010-10-27 29 views
8

Sadece PyQt öğrenme ve Sinyalleri ve Yuvaları mekanizması bakıyorum. Ben çok ayrıntılı sözdizimi ile biraz şaşırdım. Neden var:PyQt connect() sözdizimi neden bu kadar ayrıntılı?

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

ben çok aşağıdaki yazmayı tercih ediyorum:

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

connect() sözdizimi ayrıntılı/öylesine açık olması gerekiyor neden kimse bana söyleyebilir misiniz?

cevap

28

kullanabilirsiniz PyQT en new style signals az ayrıntılı olan:

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

Oldu:

dial.valueChanged.connect(spinbox.setValue) 
2

Luper 'ın cevabı bu çok daha iyi, fakat bütünlük uğruna ...

çirkin "eski tarz" sözdizimi C++ dünyadan bir anakronizm - jus Adamların çalışması gereken sözdizimine bak! Yucky...

1

Daha da kısa bir yol örneğin yapıcı anahtar kelime argümanları içinde işlevine sinyal adı atamak için QDial(valueChanged=spinbox.setValue). PyQt, valueChanged() sinyalini otomatik olarak spinbox.setValue()'a bağlayacaktır.