【问题标题】:Python tkinter: Make any output appear in a text box on GUI not in the shellPython tkinter:使任何输出出现在 GUI 上的文本框中,而不是在 shell 中
【发布时间】:2013-02-14 16:50:42
【问题描述】:

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

提前致谢

【问题讨论】:

  • Python : Converting CLI to GUI 的可能重复项
  • 不是真正的骗局
  • 您是否在问如何在您的 GUI 中执行“打印 'foo'”,但它却神奇地出现在文本小部件中?

标签: python tkinter


【解决方案1】:

如果按照 Bryan Oakley 的评论中的建议,您想“在 GUI 中打印 'foo',但让它神奇地出现在文本小部件中”,请参阅上一个问题 Python : Converting CLI to GUI 中的答案。这个答案解决了如何在文本框中产生输出的简单问题。要生成滚动文本窗口,请创建并放置或打包文本小部件(我们称之为mtb),然后使用mtb.insert(Tkinter.END, ms) 之类的命令将字符串ms 添加到文本框mtb 中,并使用mtb.see(Tkinter.END) 之类的命令来添加使框滚动。 (有关详细信息,请参阅“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()

注意,如果您希望文本窗口长时间保持打开状态和/或累积数 GB 的文本,则可能要跟踪文本框中的数据量,并每隔一段时间使用 delete 方法来限制它.

【讨论】:

  • 我需要的是一个放置在 GUI 窗口上的框,它显示由放置在 gui 上的按钮调用的函数输出的任何文本
猜你喜欢
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2019-02-03
  • 1970-01-01
  • 2021-11-01
相关资源
最近更新 更多