[pyar] error que no alcanzo a comprender

Roberto Alsina ralsina en netmanagers.com.ar
Jue Jul 5 17:12:10 ART 2012


On 07/05/2012 05:05 PM, Fernando Gonzalez wrote:

Acá decís que encontre y noencontre toman un argumento, que se llama self:

>      def encontre(self):
>          print "OK"
>
>      def noencontre(self):
>          print "No"

Acá conectás dos señales a esas funciones:

>      f1.connect(f1, QtCore.SIGNAL("datoOk"), encontre)
>      f1.connect(f1, QtCore.SIGNAL("Cancelar"), noencontre)

Y acá estás emitiendo las señales sin argumentos:

     def DatoValido(self):
         self.emit(QtCore.SIGNAL("datoOk"))

     def Cancela(self):
         self.emit(QtCore.SIGNAL("Cancelar"))

> ahora cuando pulsa cualquiera de los dos botones en la consola me aparece:
>
> TypeError: noencontre() takes exactly 1 argument (0 given)

Ahora bien, normalmente "self" se usa como primer argumento en las 
funciones que son miembros de clases, no en las que están definidas por 
ahí nomás, así que sospecho que lo que querías hacer es definir encontre 
y noencontre adentro de CtrlBuscar, no adentro del if?


Por otro lado, si haces eso, te van a dar error los connect, que 
deberian pasar a ser:

       f1.connect(f1, QtCore.SIGNAL("datoOk"), f1.encontre)
       f1.connect(f1, QtCore.SIGNAL("Cancelar"), f1.noencontre)


Yo personalmente usaría la sintaxis nueva de signals y slots que es
mucho más clara, pero bueno, esto también es válido.

Por otro otro lado, el usar self así muestra que te convendría repasar 
un poquito el tuto de python.

Un abrazo!



More information about the pyar mailing list