PyQt: QtNetwork / Signals

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
schnupp
User
Beiträge: 19
Registriert: Samstag 24. Januar 2009, 17:30
Wohnort: Hamburg

PyQt: QtNetwork / Signals

Beitragvon schnupp » Sonntag 29. März 2009, 17:21

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
jerch
User
Beiträge: 1622
Registriert: Mittwoch 4. März 2009, 14:19

Beitragvon jerch » Sonntag 29. März 2009, 20:07

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
schnupp
User
Beiträge: 19
Registriert: Samstag 24. Januar 2009, 17:30
Wohnort: Hamburg

Beitragvon schnupp » Sonntag 29. März 2009, 20:48

Danke! Funktioniert perfekt ... 8)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder