yutaka_m
@yutaka_m (yuta mori)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pythonのライブラリ内のエラーについて

解決したいこと

Tkinterの動画を再生するアプリを作っています。link
動画ファイルを読み込み、Startボタンを押し、Exitボタンを押すと、GUIが固まってしまい応答しなくなってしまいます。
Exitボタンでは、threadingを使用して動画の処理の終了を待っています。
エラーで止まる個所を調べてみると、動画の処理をしている関数内にあるImageTk.PhotoImageの処理途中で止まっていました。
ImageTk.PhotoImageのエラーについて調べる方法があれば教えてください。

発生している問題・エラー

下記のようにGUIが固まってしまう。
ャ.PNG

自分で試したこと

コードは、githubです。
コンソール上にエラーが出力されないため、print文で1行ずつ出力させてGUIが固まる部分を追っていくと、下記の部分の実行途中で止まっていました。、print文で、resized_imgが入っていることを確認しました。
ImageTk.PhotoImage内で発生しているエラーを調べる方法があれば、ご教授いただきたいです。

self.pil_img = ImageTk.PhotoImage(resized_img)
0

1Answer

スクリプトを実行できる環境がないので憶測ですが・・・

destroyしたあとにPhotoImageを作ろうとしてたりしないでしょうか?
PhotoImageを作る直前に 動作中フラグが有効であることを確認してみてはいかがでしょうか?

それと、Set_gui(main_window) で生成したインスタンスを変数に保存していないため、インスタンスオブジェクトがどこからも参照されなくなりオブジェクトが自動削除されているかもしれません。
インスタンスを変数に代入してオブジェクト参照を残すようにしてみてください。

1Like

Comments

  1. @yutaka_m

    Questioner

    ご回答いただきありがとうございます。destroyした後にPhotoImageを作っていませんでした。
    PhotoImageを作る直前の動作中フラグを確認してみたところ、有効であることが確認できました。このフラグを使って、PhotoImageを走らせないようにして回避することにしました。

    大変助かりました、ありがとうございます。

Your answer might help someone💌