[pyar] error desde una clase que llama a otra
Santiago Bruno
bananabruno en gmail.com
Lun Mayo 28 16:27:28 ART 2012
2012/5/28 Fernando Gonzalez <fagonzalez en steel.com.ar>:
> Hola a todos, estoy haciendo las primeras pruebas con python, y hasta aca
> todo bien, cuando quiero profundizar un poco, me salen algunas dudas por los
> mensajes q me tiran
> aca les muestro un trozo de código que escribí
>
> import sys
> from PyQt4 import QtCore
> from PyQt4 import QtGui
> import fichacli
> import buscarcli
>
> class BuscarYReemplazar(QtGui.QDialog, fichacli.Ui_fichacliente):
> def __init__(self, parent=None):
> super(BuscarYReemplazar, self).__init__(parent)
> #self.__text = unicode(text)
> self.__index = 0
> self.setupUi(self)
> self.updateUI()
>
> def updateUI(self):
> self.connect(self.cmdBusca, QtCore.SIGNAL("clicked()"),
> self.BuscarCliente)
>
> def BuscarCliente(self):
> cBusq = buscarcli.BuscarCliente()
> cBusq.connect(cBusq, QtCore.SIGNAL("DatoValido"), self.datoValido)
> cBusq.show()
>
> en buscarcli tengo un botón y el siguiente código
>
> import sys
> from PyQt4 import QtCore
> from PyQt4 import QtGui
> import buscar
>
> class BuscarCliente(QtGui.QDialog, buscar.Ui_Buscar):
>
> nombre = "DATO VALIDO"
> nodato = "CANCELO"
> def __init__(self, parent=None):
> super(BuscarCliente, self).__init__(parent)
> self.setupUi(self)
> self.updateUI()
>
> def updateUI(self):
> #conecto los botones con los procedimientos que disparan los eventos
> self.connect(self.cmdOk,
> QtCore.SIGNAL("clicked()"),self.DatoValido())
>
> self.connect(self.cmdCancela,QtCore.SIGNAL("clicked()"),self.Cancela())
>
> #disparo los eventos
> def DatoValido(self):
> #self.emit(QtCore.SIGNAL("DatoValido"),self.nombre)
> print "OK"
>
> def Cancela(self):
> self.emit(QtCore.SIGNAL("Cancela"),self.nodato)
>
> y cuando hago click de cmdBuscar de BuscarYReemplazar me tira lo siguiente
> por la consola:
>
> C:\PYTHON\QT\proyecto MDI1>cliente.py
> OK
> Traceback (most recent call last):
> File "C:\PYTHON\QT\proyecto MDI1\cliente.py", line 34, in BuscarCliente
> cBusq = buscarcli.BuscarCliente()
> File "C:\PYTHON\QT\proyecto MDI1\buscarcli.py", line 24, in __init__
> self.updateUI()
> File "C:\PYTHON\QT\proyecto MDI1\buscarcli.py", line 28, in updateUI
> self.connect(self.cmdOk, QtCore.SIGNAL("clicked()"),self.DatoValido())
> TypeError: arguments did not match any overloaded call:
> QObject.connect(QObject, SIGNAL(), QObject, SLOT(),
> Qt.ConnectionType=Qt.AutoC
> onnection): argument 3 has unexpected type 'NoneType'
> QObject.connect(QObject, SIGNAL(), callable,
> Qt.ConnectionType=Qt.AutoConnecti
> on): argument 3 has unexpected type 'NoneType'
> QObject.connect(QObject, SIGNAL(), SLOT(),
> Qt.ConnectionType=Qt.AutoConnection
> ): argument 3 has unexpected type 'NoneType'
>
> C:\PYTHON\QT\proyecto MDI1>
>
> Por lo que entiendo, me dice q falta un argumento en SIGNAL(), pero
> clicked() no tiene argumento, o si, alguien se da una idea cual es el error
>
> desde ya gracias
>
> Fer
>
> PD: Tanto fichacli como buscar esta importadas desde QtDesigner con el
> pyuic4.exe
El tercer argumento de connect debería ser la función, y le estás
pasando el resultado de llamar a la función, en self.DatoValido() y
Cancela(). Supongo por el error "argument 3 has unexpected type
'NoneType'".
Saludos,
Santiago.
More information about the pyar
mailing list