qthread updated fentserinhalt erst nach beenden
Verfasst: Freitag 9. März 2012, 15:09
Hi,
Ich will einen cmd.exe ersatz schreiben, weil mir das nicht so ganz gefällt. Ich habe jetzt Ein fenster mit einem textedit und will dort eingaben parsen. Ich habe einen QThread der die eingabe parst. Der Code sieht so aus:
Das problem ist wenn ich bei meinem fenster den ping signal ausführe wird der fensterinhalt erst nach dem ausführe geadded, obwohl die einzelnen zeilen ja schon vorher emitiert werden.
Woran liegt das, dass der fensterinhalt nicht sofort geupdated wird?
Ich will einen cmd.exe ersatz schreiben, weil mir das nicht so ganz gefällt. Ich habe jetzt Ein fenster mit einem textedit und will dort eingaben parsen. Ich habe einen QThread der die eingabe parst. Der Code sieht so aus:
Code: Alles auswählen
class SThread(QtCore.QThread):
updateText = QtCore.pyqtSignal(QtCore.QString, int, name="updateText")
def __init__(self):
QtCore.QThread.__init__(self)
self.input = None
self.command = None
self.index = None
self.prefix = None
def __del__(self):
self.wait()
def run(self):
self.input.userEditable = False
self.input.setEnabled(False)
p = Popen(self.command, shell=True, stdout=PIPE)
while True:
line = p.stdout.readline()
if not line:
break
self.updateText.emit(line, self.index)
self.input.update()
#self.terminal.write(line, self.index)
self.input.setEnabled(True)
self.updateText.emit(self.prefix, self.index)
Code: Alles auswählen
def execute(self, command, index=None):
if index is None:
index = self.tabWidget.currentIndex()
t = SThread()
t.command = command
t.index = index
t.input = self.textEdits[index]
t.updateText.connect(self.write)
t.prefix = self.getPrefix()
t.start()
print "asdf"