Python tkinter: 让输出显示在GUI文本框中而不是终端

12 投票
1 回答
72465 浏览
提问于 2025-04-17 15:54

我正在用Python和tkinter制作一个图形用户界面(GUI),我想知道有没有办法让输出的文本显示在这个界面上,而不是在解释器或命令行窗口里?

提前谢谢你!

1 个回答

8

如果你想在图形界面(GUI)上显示“foo”,并且希望它能神奇地出现在文本框里,可以参考之前的问题中的答案,链接在这里:Python : Converting CLI to 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()

需要注意的是,如果你希望文本窗口长时间保持打开状态,或者会积累很多文本(比如几个GB),那么最好定期检查一下文本框里的数据量,并使用 delete 方法来限制它的内容。

撰写回答