ホームページ > バックエンド開発 > Python チュートリアル > 私の Tkinter イメージがクラス内に表示されないのはなぜですか?

私の Tkinter イメージがクラス内に表示されないのはなぜですか?

Susan Sarandon
リリース: 2024-12-23 17:06:26
オリジナル
575 人が閲覧しました

Why Aren't My Tkinter Images Displaying Inside Classes?

クラスで Tkinter イメージが表示されない理由: 奇妙なケース

Python の人気のある GUI ライブラリである Tkinter では、作成時にイメージが表示されないことがよくあります。関数またはクラスメソッド内で。この奇妙な動作の背後にある理由を詳しく調べてみましょう。

クラスの外で Tkinter を使用する場合、イメージの作成と表示は簡単です。最初のコード スニペットで示したように、tkinter.PhotoImage を使用して画像を宣言し、それをキャンバスに割り当てるだけです。ただし、コードがクラス内でラップされると (2 番目のスニペットに示すように)、画像のレンダリングが停止します。

問題の鍵は、Python の変数の有効期間を理解することにあります。提供された例の photo 変数などのローカル変数は、それらが定義されている関数またはメソッドのスコープ内にのみ存在します。クラスの場合、photo 変数はクラス インスタンスの作成後に破棄されるため、Tkinter は使用できなくなります。

この状況を解決するには、関数またはメソッドのスコープ外にイメージへの参照を保存する必要があります。これは、photo 変数をクラス インスタンス自体に割り当てることで実現できます。提供されているソリューションで示されているように、

self.photo = tkinter.PhotoImage(...)
ログイン後にコピー

これにより、photo はインスタンス変数になり、クラス インスタンスが存在する間、その有効期間が延長されます。これにより、Tkinter がイメージにアクセスして期待どおりに表示できるようになります。

Tkinter でイメージが表示されないという同様の問題に直面した場合は、イメージ変数のスコープを必ずチェックし、イメージ変数が関数やメソッドを超えて持続していることを確認してください。それが作成されます。

以上が私の Tkinter イメージがクラス内に表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート