2010-10-27 10 views
8

मैं सिर्फ पीईक्यूटी सीख रहा हूं और सिग्नल और स्लॉट तंत्र को देख रहा हूं। मैं verbose वाक्यविन्यास से थोड़ा परेशान हूँ। हम क्यों हैं:क्यों PyQt कनेक्ट() वाक्यविन्यास इतना verbose है?

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

मैं बहुत निम्नलिखित लिखने के लिए पसंद करेंगे:

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

किसी को भी मुझे बता सकते हैं क्यों कनेक्ट() वाक्य रचना तो स्पष्ट/वर्बोज़ होने की जरूरत है?

उत्तर

28

आप उपयोग कर सकते हैं PyQt के new style signals जो कम वर्बोज़ हैं:

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

बन जाता है:

dial.valueChanged.connect(spinbox.setValue) 
2

Luper के जवाब इस एक की तुलना में बेहतर है, लेकिन पूर्णता के लिए के लिए ...

बदसूरत "पुरानी शैली" वाक्यविन्यास C++ दुनिया - जुस से एक अनाचारवाद है सिंटैक्स को देखो उन लोगों के साथ काम करना है! Yucky...

1

कन्स्ट्रक्टर के कीवर्ड तर्कों में फ़ंक्शन को सिग्नल नाम असाइन करना एक छोटा रास्ता है उदा। QDial(valueChanged=spinbox.setValue)। पीईक्यूटी स्वचालित रूप से valueChanged() सिग्नल spinbox.setValue() से कनेक्ट हो जाएगा।