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

时间:2013-02-14 16:50:43

标签: python tkinter

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

提前致谢

1 个答案:

答案 0 :(得分:7)

如果像Bryan Oakley的评论中所建议的那样,你想要在你的GUI中“打印'foo',但是它神奇地出现在文本小部件中”,请参阅上一个问题Python : Converting CLI to GUI中的答案。这个答案解决了如何在文本框中生成输出的简单问题。要生成滚动文本窗口,请创建并放置或打包文本小部件(让我们称之为mtb),然后使用mtb.insert(Tkinter.END, ms)之类的命令将字符串ms添加到文本框{{1}中和mtb一样使框滚动。 (有关详细信息,请参阅“The Tkinter Text Widget”文档。)例如:

mtb.see(Tkinter.END)

注意,如果您希望文本窗口长时间保持打开和/或累积千兆字节的文本,可能会跟踪文本框中的数据量,并且每隔一段时间使用#!/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() 方法限制它。