Seite 1 von 1

PyQt: QtNetwork / Signals

Verfasst: Sonntag 29. März 2009, 17:21
von schnupp
Hallo,

ich will einen Netzwerkclient erstellen, der an einem Socket horcht, von Zeit zu Zeit Daten im Hintergrund empfängt und in der GUI anzeigt.
Jemand hatte hier im Forum QtNetwork empfohlen, da man ggf. um Threads herum kommt.
Das ganz sieht bislang schlicht so aus:

Code: Alles auswählen

...
class MeinDialog(QtGui.QDialog, Dlg):
   def __init__(self):
      QtGui.QDialog.__init__(self)
      self.setupUi(self)

      self.socket = QtNetwork.QTcpSocket()
      self.socket.connectToHost(HOST_ADDRESS, PORT, QtCore.QIODevice.ReadOnly)
      self.connect(self.socket, QtCore.SIGNAL("connected()"), self.pok)
...
Was mir jetzt aber fehlt ist der eigentliche Schritt die Daten im Hintergrund zu lesen und z.B. per Signal an die GUI zu geben.
So eine Funktion unterbricht natürlich sofort den Programmablauf:

Code: Alles auswählen

def pok(self):
      print "Ok!"
      print self.socket.readLineData(1024)
Kann mir jemand einen Tipp geben?

Viele Grüße
Frank

Verfasst: Sonntag 29. März 2009, 20:07
von jerch
QTcpSocket() kennt ein Signal readyRead(), das immer dann auslöst, wenn neue Daten anliegen und der verbundene Slot nicht aktiv ist.

Code: Alles auswählen

self.connect(self.socket, QtCore.SIGNAL("readyRead()"), self.readSocketData)
...
def readSocketData(self):
  # lesen und darstellen

Verfasst: Sonntag 29. März 2009, 20:48
von schnupp
Danke! Funktioniert perfekt ... 8)