2010-10-27 10 views
8

Estoy aprendiendo PyQt y mirando el mecanismo de Signals and Slots. Estoy un poco desconcertado por la sintaxis verbosa. ¿Por qué tenemos:¿Por qué la sintaxis de PyQt connect() es tan detallada?

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

yo preferiría escribir lo siguiente:

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

Puede alguien decirme por qué el) sintaxis (conexión tiene que ser tan explícito/prolijo?

Respuesta

28

Puede utilizar new style signals de los cuales son menos detallado PyQt:

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

se convierte en:

dial.valueChanged.connect(spinbox.setValue) 
2

Luper 's respuesta es mucho mejor que éste, pero en aras de la exhaustividad ...

feo "viejo estilo" La sintaxis es un anacronismo del mundo C++ - jus ¡Mire la sintaxis con la que esos muchachos tienen que trabajar! Yucky...

1

Una forma aún más corta es asignar el nombre de la señal a la función en los argumentos de la palabra clave del constructor, p. QDial(valueChanged=spinbox.setValue). PyQt conectará automáticamente la señal valueChanged() al spinbox.setValue().