问题描述
我已经能够根据对 this question 的回答将打印语句重定向到 Tkinter 文本小部件。它描述了一个重定向标准输出的类:
class TextRedirector(object):
def __init__(self,widget,tag="stdout"):
self.widget = widget
self.tag = tag
def write(self,str):
self.widget.configure(state="normal")
self.widget.insert("end",str,(self.tag,))
self.widget.configure(state="disabled")
import sys
import time
from tkinter import *
root = Tk()
t = Text(root,width = 20,height = 5)
t.grid()
old_stdout = sys.stdout
sys.stdout = TextRedirector(t)
for i in range(5):
print i + 1
time.sleep(1)
sys.stdout = old_stdout
然而,这个解决方案似乎是阻塞的(一旦 for 循环结束,文本就会立即显示出来)。
我已经成功地使用 Popen 和线程构建了一个非阻塞解决方案,但由于一些不相关的限制,这不是一个理想的解决方案。
有没有办法让打印语句实时显示在文本框中?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)