Ich versuche, stdout zu beiden Konsole und QTextBrowser
Widget zu senden. Aber ich bekomme eine Art Endlosschleife und dann wird die Anwendung beendet.Unendlich Schleife, wenn versuchen, stdout umleiten
Hier ist mein Code:
import sys
from PyQt5 import QtWidgets, uic
from PyQt5.QtCore import *
qtCreatorFile = "qt_ui.ui"
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.start_button.clicked.connect(printing)
def printing():
print("Pressed!\n")
class Logger(QObject):
def __init__(self):
super().__init__()
self.terminal = sys.stdout
def write(self, message):
self.terminal.write(message)
self.log_browser.setText(message) #problem is in this line
def flush(self):
pass
if __name__ == "__main__":
sys.stdout = Logger()
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Als Ergebnis, wenn Klick start_button, beobachtet wird, folgende:
"C:\...\python.exe" "E:/.../qt_gui.py"
Pressed!
Pressed!
Pressed!
... (totaly 332 times)
Pressed!
Pressed!
Pressed!
Process finished with exit code 1
Ich kann einfach nicht verstehen, warum diese Linie Schleife macht:
self.log_browser.setText(message)
Nach der ersten Antwort bearbeiten:
Ich ersetzte die obige Zeile durch print(message)
, aber immer noch die gleichen Ergebnisse. Ich würde jede Hilfe schätzen.
Es gibt eine Einbuchtung Fehler unter der Klasse defintion –
Es war copy/paste Fehler, nicht von den ursprünglichen Code. Ich habe es korrigiert. – dandepeched