User:Ac001/PyQt Client
Jump to navigation
Jump to search
Simple pyqt client
import sys from PyQt4 import QtCore, QtGui, QtNetwork class SocketTest(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setWindowTitle("FlightGear - Socket Test") self.setMinimumWidth(500) layout = QtGui.QVBoxLayout(self) self.txtSocket = QtGui.QPlainTextEdit() layout.addWidget( self.txtSocket ) self.quitButton = QtGui.QPushButton(self.tr("&Quit")) self.connect(self.quitButton, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("close()")) layout.addWidget( self.quitButton ) self.listeningSocket = FlightGearListener(self) self.connect(self.listeningSocket, QtCore.SIGNAL("socketDebug"), self.update_debug) def update_debug(self, txt): self.txtSocket.setPlainText( txt ) class FlightGearListener(QtCore.QObject): def __init__(self, parent): QtCore.QObject.__init__(self, parent) self.socket = QtNetwork.QUdpSocket(self) self.socket.bind(6789) self.connect(self.socket, QtCore.SIGNAL("readyRead()"), self.process_flightgear_datagrams) self.count = 0 def process_flightgear_datagrams(self): while self.socket.hasPendingDatagrams(): datagram, host, port = self.socket.readDatagram(self.socket.pendingDatagramSize()) print "Recieving>>", self.count debug_string = "%s\nraw=%s\n" %(self.count, datagram) properties = datagram.strip().split("\t") for prop in properties: debug_string += "%s\n" % prop self.emit(QtCore.SIGNAL("socketDebug"), debug_string) self.count += 1 if __name__ == '__main__': app = QtGui.QApplication(sys.argv) widget = SocketTest() widget.show() sys.exit(app.exec_())