0

インターネットからの画像をGUIウィンドウに表示しようとしています。

これまでのところ、私のコードは次のとおりです。

picURL = "https://graph.facebook.com/" + ID + "/picture"
picBytes= urlopen(picURL).read()
picData = io.BytesIO(picBytes)
picPil = Image.open(picData)
picTk = ImageTk.PhotoImage(picPil)
label = Label(image = picTK, bg = "blue").pack()

問題は、私が得るのは、写真があるべき場所にある青いボックスだけです。これを修正するにはどうすればよいですか?

WindowsでのPython3.3の使用

4

1 に答える 1

1

これは今では大げさな推測ですが、私はちょうど同様の問題を思い出しました。このようにあなたの「ブルーボックス」を再現することができたので、これもあなたの問題かもしれません。試してみます。

PhotoImageは他のスコープ(おそらくメソッドshowImage(self, id)など)で作成され、このメソッドのスコープを超えて参照が保持されることはないと思います。これには、ラベルで使用されている場合でも、PhotoImageこのメソッドの最後でガベージコレクションが行われるという効果があります。

フレームの存続期間全体にわたって存在する変数を作成し、PhotoImageをその変数にバインドしてみてください(たとえばself.images[ID]、GUIのクラスを使用する場合、またはその他のグローバル変数を使用する場合)。私が正しく、これが確かに問題である場合、これは役立つはずです。

于 2013-03-15T14:37:33.157 に答える