Python tkinter:使任何输出显示在GUI上不在shell中的文本框中

10 python tkinter

我正在使用python和tkinter创建一个GUI,只是想知道是否有任何输出文本出现在GUI上的窗口而不是解释器/ shell上?

提前致谢

Jam*_*at7 7

如果像布莱恩Oakley的评论所说,要"打印'富’在你的GUI,但有它神奇地出现在文本组件",看到前面的问题的答案的Python:转换CLI到GUI.这个答案解决了如何在文本框中生成输出的简单问题.要生成滚动文本窗口,创建并放置或打包文本小部件(让我们调用它mtb),然后使用命令,如mtb.insert(Tkinter.END, ms)将字符串添加ms到文本框中mtb,并喜欢mtb.see(Tkinter.END)使框滚动.(有关详细信息,请参阅" Tkinter文本小组件 "文档.)例如:

#!/usr/bin/env python
import Tkinter as tk

def cbc(id, tex):
    return lambda : callback(id, tex)

def callback(id, tex):
    s = 'At {} f is {}\n'.format(id, id**id/0.987)
    tex.insert(tk.END, s)
    tex.see(tk.END)             # Scroll if necessary

top = tk.Tk()
tex = tk.Text(master=top)
tex.pack(side=tk.RIGHT)
bop = tk.Frame()
bop.pack(side=tk.LEFT)
for k in range(1,10):
    tv = 'Say {}'.format(k)
    b = tk.Button(bop, text=tv, command=cbc(k, tex))
    b.pack()

tk.Button(bop, text='Exit', command=top.destroy).pack()
top.mainloop()
Run Code Online (Sandbox Code Playgroud)

请注意,如果您希望文本窗口长时间保持打开和/或累积千兆字节的文本,可能会跟踪文本框中的数据量,并且delete每隔一段时间使用该方法来限制它.