Не работает tkinter консоль
Недавно начал писать текстовый редактор. Вот код консоли:
from contextlib import redirect_stdout
from contextlib import *
import sys
import io
from tkinter import *
import traceback
root=Tk()
text=Text(root,bg="black",fg="white")
text.pack()
code=('''print("Hi")''')
f = io.StringIO()
try:
with redirect_stdout(f):
exec(code)
text.insert(1.0,f.getvalue())
except Exception as e:
em = traceback.format_exc()
text.insert(1.0,traceback.format_exc())
root.mainloop()
Всё бы ничего, но когда я пытаюсь запустить этот код:
(Код записывается в переменную code)
from tkinter import *
root=Tk()
def com():
print("Hello")
b=Button(root,command=com)
b.pack()
Можете подсказать в чём проблема.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Если я вас правильно понял, попробуйте так:
from contextlib import redirect_stdout
from contextlib import *
import sys
import io
from tkinter import *
import traceback
root=Tk()
text = Text(root, bg="black", fg="white")
text.pack()
#code = ('''print("Hello World")''')
code = ('''
root=Tk()
def com():
text.delete(1.0, END)
with redirect_stdout(f):
exec('print("Hello")')
text.insert(1.0, f.getvalue())
b = Button(root, text='Click me', command=com)
b.pack()
''')
f = io.StringIO()
try:
with redirect_stdout(f):
exec(code)
except Exception as e:
em = traceback.format_exc()
text.insert(1.0, traceback.format_exc())
root.mainloop()

