[Python-es] Pyqt error con QtCore.SIGNAL (slot argument type)

Andrey Antoukh andsux en gmail.com
Sab Feb 26 19:42:23 CET 2011


El día 26 de febrero de 2011 18:39, Rafael Antonio Laverde
<leafar91 en gmail.com> escribió:
> Buenos días...
>
> Estoy realizando un pequeño programa en python con una iterfaz grafica en
> pyqt
>
> he sobrescrito un objeto widget el cual realiza un pequeño dibujo,
> dependiendo de un parámetros insertados en la interfaz
>
> y cuando se hace click en el boton de graficar emito la siguiente señal:
>
> self.graf.emit(QtCore.SIGNAL("recibir_y_graficar_datos(bool, int, QString,
> Transformacion, int)"), self.linea, self.pasos, self.secuencia,
> self.transformacion, self.intervalo)
>
> conectada al widget sobrescrito mediante:
>
> self.connect(self, QtCore.SIGNAL("recibir_y_graficar_datos(bool, int,
> QString, Transformacion, int)"), self.graficar)
>
> ---Trasformacion es una clase que cree y que tiene como atributos un
> diccionario de listas
>
> pero al ejecutarlo me da el siguiente error:
>
> TypeError: type 'Transformacion' is not supported as a slot argument type
>
> --mi duda es acerca de como puedo enviar objetos de clases propias mediante
> QtCoreSignal, o como acceder desde el objeto graf a los atibutos de la
> ventana
>
> la estructura es mas o menos la siguiente
>
> class Ventana_principal(QWidget, Main_window.Ui_main_window_form):
>     def __init__(self, *args):
>         self.transformacion = self.dic_transformaciones['ninguna']  #es un
> diccionario donde estan guardadas las diferentes transformaciones
>         #otros atributos
>         self.graf = Grafica()
>         self.connect(self.graficar_pushButton, QtCore.SIGNAL('clicked()'),
> self.enviar_valores)
>
>        def enviar_valores(self):
>
> self.graf.emit(QtCore.SIGNAL("recibir_y_graficar_gramaticas(bool, int,
> QString, Transformacion, int)"), self.linea, self.pasos, self.secuencia,
> self.transformacion, self.intervalo)
>
>
> class Grafica(QtGui.QWidget):
>     super(Grafica, self).__init__()
>     self.connect(self, QtCore.SIGNAL("recibir_y_graficar_gramaticas(bool,
> int, QString, Transformacion, int)"), self.graficar)
>
>     def graficar(self, linea, pasos, secuencia, transformacion, intervalo):
>         ###algunas operaciones
>
> ...Gracias
>
Hola.
Si no me equivoco, estas usando la manera obsoleta de conectar signals
con slots, yo de ti me leía la documentación de PyQt que lo explica
bastante bien.

Igual los ejemplos que has pegado aquí, yo personalmente no me aclaro,
seria de agradecer que pegaras el código completo de la parte que
falla en un pastebin, y ademas incluyeras el traceback.

Igual con estos datos sera mas fácil identificar el problema ademas de
recomendarte que dejes de usar la manera obsoleta de conectar signals
con slots.

Un saludo.
Andrei.


-- 
http://twitter.com/andsux
http://www.niwi.be
****
http://www.freebsd.org/
http://www.postgresql.org/
http://www.python.org/
http://www.djangoproject.com/

"Linux is for people who hate Windows, BSD is for people who love UNIX"
"Social Engineer -> Because there is no patch for human stupidity"


Más información sobre la lista de distribución Python-es