当我点击按钮之前启动我的gtk.ProgressBar.set_text('Text')
时,我正试图让subprocess
工作。
这是我的代码(完整来源here):
def on_button_clicked(self, button, progress_bar, filename):
self.execute(progress_bar, filename)
def execute(self, progress_bar, filename):
progress_bar.set_text('Encoding')
progress_bar.pulse()
cmd = ['ffmpeg', '-y',
'-i', filename,
'-r', '30',
'/tmp/test-encode.mkv']
process = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE)
process.wait()
progress_bar.set_text('Done')
我尝试在progress_bar.set_text('Encoding')
中移动on_button_clicked()
,但它没有改变任何内容:我点击按钮,作业完成(文件已正确生成并且正常),然后进度条显示“完成”。
我完成了我的作业并阅读了所有相关问题,但他们要么不使用subprocess,要么解析“常规”命令输出。
答案 0 :(得分:0)
添加
progress_bar.set_text('Encoding')
while gtk.events_pending(): # this forces GTK to refresh the screen
gtk.main_iteration()
在on_button_clicked()
中强制GTK在继续之前刷新屏幕。
你甚至可以添加
progress_bar.set_text('Finished')
while gtk.events_pending(): # this forces GTK to refresh the screen
gtk.main_iteration()
一旦文件被写入,就在execute
中。