我的问题与此基本相同:Run process with realtime output to a Tkinter GUI
我有示例代码可打印到gui(实时),但是它立即出现,也使我的应用程序冻结。我试图根据我想显示的功能来更改从上述问题的答案中获得的小代码,但这没有用。
我是python的新手,我试图找到答案,并且主要使用线程化和popen。
from tkinter import *
from d2v import output
root=Tk()
textbox=Text(root)
textbox.pack()
button1=Button(root, text='output', command=lambda : output().output_res())
button1.pack()
def decorator(func):
def inner(inputStr):
try:
textbox.insert(INSERT, inputStr)
return func(inputStr)
except:
return func(inputStr)
return inner
sys.stdout.write=decorator(sys.stdout.write)
root.mainloop()
这是要打印的功能:
import sys, time
class output:
def output_res(self):
for i in range(10):
print(i)
sys.stdout.flush()
time.sleep(0.5)