方法目录
这其实是很简单,有几种方法,在我最近开发的库里,就有这个案例
现在,我把它搬过来介绍介绍
方法一:重定向至文件
这个我不太推荐,因为我们如果是要用它去做软件的话,非常的麻烦。它的概念其实是把print的输出打印到文件里,你若要把它输出到tkinter的GUI,那还得读取文件,再把读取出的信息插入到tkinter里。(也就是open文件)
先说一下代码,这个是重定向的
import sys
file = open("file.txt","w") # 目标文件
output = sys.stdout # 备份
sys.stdout = file # 重定向
print("test") # 打印到文件
sys.stdout = output # 还原
然后获取:
with open("file.txt","r") as f:
print(f.read())
f.close()
方法二:自制重定向类
这个是我觉得比较好的,因为它的局限性比较小,你可以自己决定重定向至那里,所以我个人比较推荐这个方法
这是一个示例自定义重定向类:
# 这个类sys自己会调用write,所以起到了重定向的效果
class StdoutRedirector(object):
def __init__(self, text_widget):
self.text_space = text_widget
# 备份
self.stdoutbak = sys.stdout
self.stderrbak = sys.stderr
def write(self, str):
self.text_space.delete(0.0, END)
self.text_space.insert(END, "\n"+str)
self.text_space.insert(END, '\n')
self.text_space.see(END)
# 刷新显示
self.text_space.update()
def restoreStd(self):
# 还原
sys.stdout = self.stdoutbak
sys.stderr = self.stderrbak
def flush(self):
# 这个类必须得有,不然会报错
pass
这个就简单许多,就是相对来说比较复杂
调用的话,可不是直接调用类,而是要用下面的格式:
# (!)注意,tkinter小部件只能是文本类(!)
output = sys.stdout # 二级备份
sys.stdout = StdoutRedirector("这里面输入你的tkinter部件变量")
print("test") # 重定向至tkinter小部件
sys.stdout = output # 还原
是不是很简单?
方法三:直接设置
这个方法面向pycharm的用户,再配置>python>执行>重定向至就可以设置了,但是,这个也是重定向至文件里哦
谢谢阅读我的文章,你的鼓励是我最大的动力!
本文为 wsw的日常 原创,未经允许,严禁转载!违者必究!