Bin für Verbesserungsvorschläge offen

Code: Alles auswählen
def run(self):
with open("log.log", "r") as stream:
for line in log:
self.newLineRead.emit(line.strip())
Code: Alles auswählen
self.newLineRead.emit("Hallo, ich bin ein mehr als achtzig Zeichen langer Befehl und möchte ohne Zeilenumbruch ausgegeben werden")
Code: Alles auswählen
from PySide import QtCore, QtGui
import sys, time
class MainGui(QtGui.QMainWindow):
def __init__(self, read):
QtGui.QMainWindow.__init__(self)
widget = QtGui.QWidget(self)
widget.setLayout(QtGui.QVBoxLayout(widget))
self.setCentralWidget(widget)
logEdit = QtGui.QPlainTextEdit(widget)
logEdit.setObjectName("textEdit")
widget.layout().addWidget(logEdit)
startButton = QtGui.QPushButton(widget)
startButton.setObjectName("pushButton")
widget.layout().addWidget(startButton)
startButton.setText(
QtGui.QApplication.translate("Form",
"Start",
None,
QtGui.QApplication.UnicodeUTF8
)
)
startButton.clicked.connect(read.start)
read.newLineRead.connect(logEdit.appendPlainText)
class ReadTXT(QtCore.QThread):
newLineRead = QtCore.Signal(unicode)
def run(self):
file = open("log.log", "r")
lines = file.readlines()
file.close()
for line in lines:
self.newLineRead.emit(line.strip())
time.sleep(0.01)
def main():
app = QtGui.QApplication(sys.argv)
read = ReadTXT()
widget = MainGui(read)
widget.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Denke mal die Talker Klasse wird nicht richtig initialisiert sodass das Signal nicht richtig erstellt wird... Wie geht es richtig?Traceback (most recent call last):
File "C:\scripts\mainExample.py", line 61, in <module>
main()
File "C:\scripts\mainExample.py", line 56, in main
widget = MainGui(read)
File "C:\scripts\mainExample.py", line 34, in __init__
Talker.writeNewLine.connect(logEdit.appendPlainText)
AttributeError: 'PySide.QtCore.Signal' object has no attribute 'connect'
Code: Alles auswählen
signalVariable = QtCore.Signal(unicode)
Code: Alles auswählen
???.signalVariable.connect(func)