我正在使用 python 和 tkinter 制作一个 GUI,只是想知道是否有任何输出文本出现在 GUI 的窗口中而不是解释器/shell 上?
提前致谢
如果,正如 Bryan Oakley 的评论中所建议的那样,您想“在 GUI 中打印 'foo',但让它神奇地出现在文本小部件中”,请参阅上一个问题Python:Converting CLI to GUI中的答案。这个答案解决了如何在文本框中产生输出的简单问题。要生成一个滚动文本窗口,创建并放置或打包一个文本小部件(我们称之为它mtb
),然后使用诸如mtb.insert(Tkinter.END, ms)
将字符串添加ms
到文本框之mtb
类的命令,以及mtb.see(Tkinter.END)
使框滚动。(有关详细信息,请参阅“<a href="http://effbot.org/tkinterbook/text.htm" rel="nofollow noreferrer">The Tkinter Text Widget”文档。)例如:
#!/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()
请注意,如果您希望文本窗口长时间保持打开状态和/或累积千兆字节的文本,则可能要跟踪文本框中的数据量,并delete
每隔一段时间使用该方法来限制它。