显示子进程stdout的组件?

3 投票
1 回答
2755 浏览
提问于 2025-04-17 06:21

我有一个用Python写的tkinter脚本,它通过subprocess模块执行一些命令。现在我想把这些命令的输出显示在图形界面上。因为我刚接触tk(才一周哦!),所以需要你的建议,我该怎么做呢?我有两个问题:

  1. 我应该学习哪个组件来显示输出。
  2. 如何把subprocess的输出连接到你提到的组件上。

1 个回答

2

你可能想用 Tkinter.Text 这个小工具,具体介绍可以在 这里 找到。

虽然介绍有点长,但你主要需要知道的是,这个工具可以用来作为一个缓冲区,也就是说你可以在里面插入文本。

所以,对于每一行来自 subprocess 的输出,你都需要把文本插入到你想要的位置。举个例子:

t = Tkinter.Text(root)
while some_condition:
    s = p.readline()          # get subprocess output
    t.insert(END, s)

编辑 可以 看看这里,了解如何逐行获取 subprocess 的输出。

你可能还想了解一下 Tkinter.ScrollbarText.see(),这样可以调整显示效果。

撰写回答