@Duesentrieb: Erst einmal sollte man nichts mehr in Python 2 anfangen.
Dann ist es unsauber kein Master zu übergeben. Letztlich verbaut man sich damit auch die Möglichkeit das in eine GUI einzubinden die aus mehr als einem impliziten Hauptfenster besteht. Ebenso das `pack()` in der `__init__()` verhindert das man dieses Widget beispielsweise in ein `grid()` setzen kann.
`c` ist kein guter Name. Falls das für `console` stehen soll, dann sollte man das auch so schreiben.
Für das Umleiten von der Standardausgabe hat das `contextlib`-Modul eine Funktion die die Ausgabe auch wieder zurücksetzt.
Es gibt da bereits etwas von Ratio…, äh, in der Standardbibliothek: `ScrolledText`.
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
from contextlib import redirect_stdout
from tkinter.scrolledtext import ScrolledText
class TkConsole(ScrolledText):
def write(self, text):
self.insert(tk.END, text)
def main():
root = tk.Tk()
console = TkConsole(root, width=80, height=20)
console.pack()
with redirect_stdout(console):
print("Ich bin ein Testingteststring")
root.mainloop()
print("Bye...")
if __name__ == "__main__":
main()