【发布时间】:2011-05-07 02:54:52
【问题描述】:
我想知道一种制作 GUI 进度条的好方法。我正在使用 python、Glade/GTK。我想获得的不仅仅是一个脉冲条的程序示例。可以让用户更准确地了解进度的方法。我试图为其捕获的程序是 cdparanoia,但想知道如何为 wget 等其他程序执行此操作。这两个程序需要注意的重要一点是信息在 stderr 上输出。
我应该在做的时候提到这一点
output = p.stderr.read(1)
print output
不显示文本进度条正在显示。这几乎就像它以不同的方式对待非交互式外壳。没有回车符 (\r),就像我想象的那样。
编码是这样的:
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
非常感谢, 纳尼
【问题讨论】:
-
很可能是它以不同的方式对待非交互式外壳。对于文本进度条,它可能使用 ncurses 之类的东西,如果它不在终端上,它就不起作用。我不知道具体情况。
-
运气好吗?
-e有帮助吗?我对其进行了测试——当使用-e调用它时,它似乎确实输出到了stderr;>字符的位置似乎是计算适当分数的一种快速、简单且容易的方法。 -
遗憾的是,我放弃了足够长的时间开发这个应用程序,以至于我的 repo 中的 glade 更改为下一个版本,即 GTK3。我希望有一天能移植这个并可能继续开发,但我正处于另一个项目的中间,需要开始和完成另一个项目,然后才能重新开始。
标签: python shell progress-bar pygtk glade