PyQt und thread

Hillkorn

Mitglied
Hi ich will einen Thread starten der in einem PyQt Mainwindow empfangene nachrichten ausgibt und das am besten über einen thread

klappt an sich alles bis auf das ich das ganze ins fenster bekomm.
Sobald der befehl dazu kommt stürzt das programm immer ab :(
Ohne thread geht es!

Code:
import socket
import sys
from PyQt4 import QtCore, QtGui
from Ui_client import Ui_MainWindow as Dlg
import thread
import time

class CDlg(QtGui.QMainWindow, Dlg):
    def __init__(self, s):
        QtGui.QMainWindow.__init__(self)
        self.setupUi(self)
        self.show()
        
        self.s = s
        
        self.connect(self.Connect, QtCore.SIGNAL("clicked()"),  self.onConnect)
        self.connect(self.Sender, QtCore.SIGNAL("clicked()"),  self.onSend)
        
        
    def onSend(self):
        self.s.send("Hillkorn: %s\n" % self.Inputbox.toPlainText())
        self.Inputbox.clear()
        
    def onConnect(self):
        self.s.connect(("127.0.0.1", 51000))
        global ct
        ct = True
        
    def onEmpf(self, nachricht):
        #  nachricht = self.s.recv(1024)
        #  nachricht = self.Outputbox.toPlainText() + nachricht
        self.Outputbox.setPlainText(nachricht)
  


def empfangen():
    global ct
    global nachricht
    global s
    global window
    print "out if"
    while True:
        if ct == True:
            print "in if"
            nachricht += s.recv(1024)
            window.onEmpf(nachricht)
        time.sleep(2)
        

#ip = raw_input("IP-Adresse: ")
#name = raw_input("Ihr name? ")
#s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#s.connect((ip, 51000))

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ct = False
nachricht = ""
app = QtGui.QApplication(sys.argv)
window = CDlg(s)
thread.start_new_thread(empfangen, ())
sys.exit(app.exec_())
SRY ich weiß geht besser zu schreiben aber hab den code so oft verändert ohne ergebnisse das es jetz halt einfach nur funktionieren soll

Schonmal danke und freu mich über jeden rat
 
Zurück