[PyQt] QudpSocket and QThread

emmanuel_mayssat at lynceantech.com emmanuel_mayssat at lynceantech.com
Tue Aug 23 17:58:19 BST 2011


Hello,

I am trying to put a QUdpSock et in a QThread
Code is:
class LUdpConnectionThread(QThread):
    def __init__(self, parent=None):
        super(LUdpConnectionThread,self).__init__(parent)
        self.debug = (DEBUG & THREADS)

    @LInAndOut(DEBUG & THREADS)
    def run(self):
        '''
        Note:  QObject: Cannot create children for a parent that is in a different thread.
        was resolved because self.socket to socket (no self!) !
        '''
        if self.debug: print "UDP Server on %d" % UDP_PORT
        udpSocket = QUdpSocket()
        #self.udpSocket.bind(QHostAddress.LocalHost,UDP_PORT)
        udpSocket.bind(QHostAddress("0.0.0.0"),UDP_PORT)
        udpSocket.readyRead.connect(self.on_udpSocket_readyRead)

    @LInAndOut(DEBUG & THREADS)
    def on_udpSocket_readyRead(self):
        if self.debug: print 'toto'
#        datagram, senderHost, senderPortNumber =
self.udpSocket.readDatagram(self.udpSocket.pendingDatagramSize())


I had to remove the SELF in self.udpSocket in run because of QObject error
Q: How can I read my datagram in on_..._readyRead if I don't have a SELF.udpSocket?

Q: Maybe use waitForReadyRead method, but how to do that?
I need to make sure I have received the entire datagram, etc.

Any help appreciated,

-- 
Emmanuel


More information about the PyQt mailing list