Почему PyQt connect () так многословен? - PullRequest
8 голосов
/ 27 октября 2010

Я только изучаю PyQt и изучаю механизм сигналов и слотов. Я немного сбит с толку многословным синтаксисом. Почему у нас:

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

Я бы предпочел написать следующее:

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

Может кто-нибудь сказать мне, почему синтаксис connect () должен быть настолько явным / подробным?

Ответы [ 3 ]

28 голосов
/ 27 октября 2010

Вы можете использовать PyQt сигналы нового стиля , которые являются менее подробными:

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

становится:

dial.valueChanged.connect(spinbox.setValue)
2 голосов
/ 01 февраля 2013

Luper ответ гораздо лучше, чем этот, но ради полноты ...

уродливый синтаксис "старого стиля" - анахронизм из мира C++ - просто посмотрите на синтаксис, с которым парни должны работать! Yucky ...

1 голос
/ 24 ноября 2013

Еще более коротким способом является присвоение имени сигнала функции в аргументах ключевого слова конструктора, например, QDial(valueChanged=spinbox.setValue). PyQt автоматически подключит сигнал valueChanged() к spinbox.setValue().

...