在我的PyQt4应用程序中,有一个功能允许用户保存一个avi文件。为此,在主窗口中实现了一个saveMovie方法:
def saveMovie(self):
""" Let the user make a movie out of the current experiment. """
filename = QtGui.QFileDialog.getSaveFileName(self, "Export Movie", "",
'AVI Movie File (*.avi)')
if filename != "":
dialog = QtGui.QProgressDialog('',
QtCore.QString(),
0, 100,
self,
QtCore.Qt.Dialog |
QtCore.Qt.WindowTitleHint)
dialog.setWindowModality(QtCore.Qt.WindowModal)
dialog.setWindowTitle('Exporting Movie')
dialog.setLabelText('Resampling...')
dialog.show()
make_movie(self.appStatus, filename, dialog)
dialog.close()
我的想法是使用 QProgressDialog 来展示视频编码的进度。然而,在选择文件名后,QFileDialog 不会消失,整个应用程序会一直处于无响应状态,直到 make_movie 函数完成。
我该怎么做才能避免这种情况呢?
processEvents()
的调用。请参考这个问题。 - Junuxxmake_movie
移到了另一个线程中,以避免阻塞用户界面。很快会发布代码。 - Loris Fichera