Я создал скрипт на python, в котором есть много операторов печати, показывающих, что делает программа, вместо того, чтобы просто сидеть там, и скрипт на python работает нормально, сейчас я создаю интерфейс с помощью tkinter. То, что я использовал для отправки операторов печати, чтобы вернуть их, выглядит примерно так:
test.py
def PrintX():
X = [1,2,3,4,5]
for x in X:
print(x)
Я планирую добавить фрейм tkinter, в котором я добавлю метку и установлю текстовую переменную для своей функции в моемскрипт. Мой скрипт страницы tkinter выглядит так:
class TradingBotapp(tk.Tk):
def __init__(self,*args,**kwargs):
tk.Tk.__init__(self,*args,**kwargs)
container = tk.Frame(self)
container.pack(side='top',fill='both',expand= True)
container.grid_rowconfigure(0,weight = 1)
container.grid_columnconfigure(0,weight = 1)
self.frames = {}
for F in (InitalSetup):
frame = F(container,self)
self.frames[F] = frame
frame.grid(row=0,column=0,sticky='nsew')
self.show_frame(InitalSetup)
def show_frame(self,cont):
frame = self.frames[cont]
frame.tkraise()
class InitalSetup(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self, text='Setup', font = LARGE_FONT).pack()
Frame = tk.Frame(self,width=768,height=576).pack()
lbl = tk.Message(Frame, text='').pack()
button1 = ttk.Button(self, text='Start Setup',command=lambda:callback2(lbl)).pack()
def callback2(object):
old_stdout = sys.stdout
sys.stdout = StdoutRedirectorLabel(lbl)
setup()
#lbl['text'] = sys.stdout.result.strip()
sys.stdout = old_stdout
class StdoutRedirectorLabel(object):
def __init__(self,widget):
self.widget = widget
self.widget['text'] = ''
def write(self, text):
self.widget['text'] += text
app = TradingBotapp()
app.mainloop()
Но ничего не появляется, но когда я нажимаю кнопку, я получаю self.widget['text'] = ''
TypeError: 'NoneType' object does not support item assignment
, любая помощь будет очень признательна