aktuell landen alle meine Exceptions aus try/expect per print() in der console. Jetzt habe ich in meiner GUI (QT) ein QPlainTextEdit (plainTextEdit_log) angelegt, dort sollen sämtliche Fehlermeldungen die ich abfange bzw. selber generiere nicht mehr per print() auf die console wandern, sondern in plainTextEdit_log landen. Ich frag mich allerdings, wie ich das realisieren soll?!
Die Klasse MainWindow kann direkt auf das plainTextEdit_log zugreifen, aber wie schaffe ich das aus den anderen Klassen? Ich möchte eigentlich nicht jede Funktion so umbauen müssen das es den Fehler bis in die Klasse MainWindow zurück reicht (return), nur um es dort anzuzeigen. Das muss doch viel einfacher gehen?!
Hier mal ein (pseudocode) Minimalbeispiel, hab meine ganze Algorithmik entfernt (um es übersichtlich zu halten). Falls mich so keiner versteht, kann ich aber auch mal versuchen ein funktionierendes Minimalbeispiel zu produzieren.
Code: Alles auswählen
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
def tuWas(self):
try:
raise Exception("Boooooomm...")
expect Exception as inst:
self.plainTextEdit_log.appendPlainText(inst)
class AndereKlasse():
def __init__(self):
pass
def tuWas(self):
try:
raise Exception("Shit happens...")
expect Exception as inst:
self.plainTextEdit_log.appendPlainText(inst) # So gehts nicht, ich weiß auch wieso, aber wie kann ich es machen, das ich hier auf plainTextEdit_log zugreifen kann?
class GanzAndereKlasse():
def __init__(self):
pass
def tuWas(self):
try:
raise Exception("Toller Fehler")
expect Exception as inst:
self.plainTextEdit_log.appendPlainText(inst) # So gehts nicht, ich weiß auch wieso, aber wie kann ich es machen, das ich hier auf plainTextEdit_log zugreifen kann?
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
sat = MainWindow()
sat.show()
sys.exit(app.exec_())