Python 求解,如何在 python GUI 的 Text 控件中实时显示运行 log

FyueC · 2019年11月26日 · 最后由 Wang 回复于 2021年04月01日 · 4293 次阅读

如题,网上找了很多都没找到合适的解决方法,看看论坛有没有大佬会的
GUI 代码如下:

from tkinter import *
root = Tk()
text = Text(root,width=200,height=150)
text.pack()

希望实现像终端打印 Log 那样在 Text 控件上打印,已经试过重定向 sys.stderr,没啥效果,可能写的方式不对

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 9 条回复 时间 点赞

大佬,可以发出来解决结果吗?😁

FyueC #10 · 2020年01月08日 Author
os 回复

谢谢关注 已经控件实时读取文件的方式解决了,也可以重写 log 的 headler,将 log 中的 stderr 直接插入到控件中去实现

9楼 已删除
8楼 已删除

self.appValue = tk.StringVar()
self.appValue.set('双击选择 app')
appLabel = Label(self.master, textvariable=self.appValue)
appLabel.pack(side=TOP, pady=10, expand=YES, fill=BOTH)

FyueC 回复

抱歉哈,好久没登录了。
你使用 tkinter 肯定是想做界面。
Text 如果没有属性的话,你可以绑给 Label,Label 组件具有这个属性
又或者你想用 Text 组件,那么 Text 组件有 Insert 方法

1 from tkinter import *
2
3 root = Tk()
4 text = Text(root,width=20,height=15)
5 text.pack()
6 text.insert(INSERT,"Python3 \n") #INSERT 索引表示插入光标当前的位置
7 text.insert(END,"python 算法")
8 mainloop()

也可以实现你的实时 log,具体怎么实现看你自己的意愿了

os 回复

老哥,Text 控件没有 textvariable 选项

你这个问题太简单了,让我怀疑我是 py 大佬

修改 varString() 即可

给 text 绑定一个 varString()

1

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册