我想知道制作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
答案 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).