使用命令行工具的GUI进度指示器

时间:2011-05-07 02:54:53

标签: python shell progress-bar pygtk glade

我想知道制作GUI进度条的好方法。我正在使用python,Glade / GTK。我希望获得的不仅仅是一个脉冲条的程序示例。可以让用户更准确地了解进度的东西。我试图捕获的程序是cdparanoia,但想知道如何为wget等其他程序执行此操作。关于这两个程序的重要注意事项是在stderr上输出信息。

我应该在做一个

时提到
output = p.stderr.read(1)
print output

不显示正在显示文本进度条。它几乎就像是以不同方式处理非交互式shell。没有像我想的那样回车(\ r)。

Codings就是这样:

import subprocess, shlex, gtk

command = 'cdparanoia -w -Z 1- - | sox -t wav - "my disk.flac"'

p = subprocess(shlex.split(command), stderr=subprocess.PIPE)

gui = gtk.Builder()
gui.add_from_file("pulsebar.glade")
#do magic here to make a good pulsebar

感激, Narnie

1 个答案:

答案 0 :(得分:0)

gtk.ProgressBar? (请注意.set_fraction()方法。)

Here's有关从子进程执行非阻塞读取的一些信息。使用超时进行轮询的建议似乎是合适的。另外,this answer

我对cdparanoia的进度指示的朦胧记忆是它非常特殊。但我猜它只是一些愚蠢的东西+'\ r';不应该太难从中提取一小部分。

编辑:好的,实际上,在正常使用情况下,上述内容可能不正确;但你试过-e吗?

-e --stderr-progress
          Force  output  of  progress  information  to stderr (for wrapper
          scripts).