QWidget 内で VLC MediaPlayer インスタンスをホストする PySide アプリケーションがあります。QMainWindow の close イベントを介して、または QApplication.quit() を使用してアプリケーションを閉じると、UI が消え、「python.exe が動作を停止しました」という Windows ダイアログが表示されます。
QApplication は、カスタム QWidget を含むカスタム QMainWindow クラスをホストします (これはすべての UI タスクを処理し、QMainWindow はスレッド間のメッセージングを処理します - アプリはキーストロークを記録し、バックグラウンド スレッドで出力ファイルを書き込みます)。ビデオの現在の位置で LineEdit を更新するメインの QWidget を実行するタイマーもあります。
ファイルが書き込まれているかどうかに関係なく、クラッシュが発生します (コードはコメントアウトされています)。
ある種のガベージ コレクションを実行する必要がありますか、それともオブジェクトを特定の順序で破棄する必要がありますか? タイマーを停止し、MediaPlayer、インスタンス、および MediaPlayer をホストするフレームをすべて None に設定してから、フレームを破棄 (self.videoFrame.destroy()) しようとしましたが、アプリはまだクラッシュします。
基本的なコードは、vlc の repo exampleのサンプル Qt アプリケーションに基づいており、特別なガベージ コレクションやオブジェクトの破棄はありません。
Windows XP で Python 2.6 を実行しています。現在、コマンド ラインから直接 Python を実行していますが、このクラッシュが修正されたら、Py2Exe で exe を作成するように設定しています。