我正在創建一個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