我正在创建一个python gtk程序,它将视频上传到ubuntu 10.10的youtube中。它使用Googlecl软件包。你可以谷歌它的更多信息。我已经实现了通过以下语法调用程序。在Python中创建一个新的子进程gtk
os.system('google youtube post --category %s --title \'%s\' --summary \'%s\' --tags %s %s' % ("Education",title,description,tags,filename))
现在,它工作正常,这是视频上传到youtube。然而取决于视频大小,根据网络速度的不同,上传需要很长时间。当它上传时,我的python gtk程序变成灰色(冻结,在ubuntu中无响应),并且只有在视频上传后,用户才能再次与程序交互。
有没有办法将上传部分分离到子流程中,以便用户在视频正在某个其他后台进程中上传时仍然可以与该程序进行交互?我想显示一个进度条窗口,它会向用户指出程序仍在运行并正常工作。
为此,我创建了一个progress_bar窗口并输入以下代码。
progress_bar.show()
os.system('google youtube post --category %s --title \'%s\' --summary \'%s\' --tags %s %s' % ("Education",title,description,tags,filename))
progressbar.set_fraction(0.5)
然而,当我执行程序,进度条窗口不显示和视频被上传,这使得我的程序停止响应,直到上传完成。
更新:有没有办法做到这一点类似于progress bar not updating。通过这种方式,我只需要在代码中做一些小改动,但我不知道在该方法中声明的while循环while heavy_work_needed
中的条件是什么。
为防万一你还没有碰到它,有一个Youtube的Python API。您仍然需要在单独的线程中进行上传,但比调用单独的程序更强大。 http://code.google.com/apis/youtube/1.0/developers_guide_python.html#UploadingVideos – 2011-01-06 11:17:14