当前位置: 首页 > 面试题库 >

显示子流程标准输出的小部件?

袁鸿达
2023-03-14
问题内容

我有一个基于python的tkinter脚本,该脚本使用子过程模块执行一些命令。我需要在GUI上显示标准输出。由于我是tk的新手(一周粗体:)),我需要您的建议我应该如何进行。我有两个查询:

  1. 我应该学习哪个小部件来显示标准输出。
  2. 如何将子流程的标准输出链接到您提到的小部件。

问题答案:

您可能要使用此处所述的Tkinter.Text小部件。

描述很长,但是您需要了解的主要是该小部件可以用作缓冲区,因为应该在其中插入文本。

因此,对于subprocess输出中的每一行,您都必须在所需的位置插入文本。例:

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

编辑 有无这里看看通过在线获取子输出线。

您可能还想看看Tkinter.ScrollbarText.see()调整显示。



 类似资料:
  • 问题内容: 我有以下代码(python2.7): “ longrunning” bash脚本的输出是实时捕获的(显示在控制台中),但是Tkinter窗口仅在子进程结束后显示! 如何在子进程启动之前实时显示窗口并更新其内容? 问题答案: 终于我找到了解决方案。窗口构建后,必须添加: 然后,在小部件中插入每行之后,还必须仅在小部件上使用相同的方法强制刷新。

  • 问题内容: 我的python脚本使用子进程来调用非常嘈杂的linux实用程序。我想将所有输出存储到日志文件中,并向用户显示其中的一些内容。我以为下面的方法可以工作,但是直到实用程序产生大量输出后,输出才出现在我的应用程序中。 我真正想要的行为是过滤器脚本打印从子流程接收到的每一行。像是做什么,但带有python代码。 问题答案: 自从我上一次使用Python以来已经很长时间了,但是我认为问题出在语

  • 问题内容: 我有这个简单的脚本: 在这里,我只需执行一个命令即可编译咖啡脚本文件。但是stdout永远不会显示在控制台中,因为该命令永远不会结束(因为coffee的- w选项)。如果我直接从控制台执行命令,则会收到如下消息: 我的问题是:是否可以使用node.js exec显示这些消息?如果是,怎么办?! 谢谢 问题答案: 不要使用。使用哪个是对象。然后,您可以在事件 发生时 收听/ event(

  • 问题内容: 我知道Java中有一个函数可以使用method 将标准输出流设置为任何用户定义的值。 但是,是否有任何方法可以将标准输出重置为先前存储的标准输出还是标准输出? 问题答案: 您可以通过持有标准的文件描述符。要重置标准以打印到控制台,您可以 另一种方法是仅保留原始对象,如下所示:

  • 问题内容: 我试图用Python编写程序,并被告知运行.exe文件。运行此.exe文件时,它会吐出大量数据,并且我需要在屏幕上打印出一定的行。我很确定我需要使用或类似的东西,但是我是子处理的新手,没有任何线索。有人有简单的方法让我完成此工作吗? 问题答案: 像这样:

  • 问题内容: 在Linux 3.0 / C ++下: 我想要一个执行以下操作的函数: 显然上述方法不起作用,但是您可以理解。我有一个字符串s,我希望将其作为应用程序“ foo”的子进程执行的标准输入传递,然后将其标准输出记录到字符串r中,然后将其返回。 我应该使用linux syscall或posix函数的什么组合? 问题答案: eerpini提供的代码无法正常工作。请注意,例如,之后将使用在父级中

  • 我是Java的初学者。学习罗伯特·塞奇威克的《Java导论》 我尝试在Netbeans中编译以下代码。 } 我收到了这个错误。我已将文件放置在标准位置。java 线程“main”java.lang.RuntimeException中的异常:无法编译的源代码-错误的sym类型:示例。StdIn.is在示例中为空。verage.main(verage.java:16)Java结果:1 BUILD SU

  • 问题内容: 我想在Windows中使用rsync.exe,并在Python中打印标准输出。 我的代码可以运行,但是直到文件传输完成后才能捕获进度!我想实时打印每个文件的进度。 既然我听说使用Python 3.1,现在应该会更好地处理IO。 问题答案: 一些经验法则。 永远不要使用。它不必要地调用额外的shell进程来调用您的程序。 调用进程时,参数作为列表传递。sys.argv在python中是一