前提
tkinerとwebAPI(pokeAPI)を使用して制作中なのですが、
画像の表示方法がわからないので教えていただきたいです。
実現したいこと
実行しようとした手順としては、
①webAPIにて画像URLを取得
②①のURLを利用して画像をダウンロードして保存
③②で保存した画像を表示 ←ここができません
発生している問題・エラーメッセージ
該当のソースコード
Python
1 2 3### 4 5import tkinter as tk 6 7import requests 8 9 10canvas = tk.Tk() 11canvas.geometry('700x500') 12canvas.title('ポケモン図鑑') 13 14 15 16def getPokemon(canvas): 17 pokemon = textField.get() 18 api = "https://pokeapi.co/api/v2/pokemon/"+ pokemon +"/" 19 json_data = requests.get(api).json() 20 21 name = json_data['name'] 22 image_url = json_data['sprites']['front_default'] 23 file_path = './' + name + '.png' 24 25 def download_image(url, path): 26 getImage = requests.get(url,stream=True) 27 with open(path,"wb") as f: 28 f.write(getImage.content) 29 download_image(image_url, file_path) 30 31 32 33 text_info = name 34 label.config(text=text_info) 35 36 37 image_file = pokemon + ".png" 38 load = tk.PhotoImage(file=image_file) 39 canvas = tk.Canvas(bg="black", width=96, height=96) 40 canvas.place(x=300, y=250) 41 canvas.create_image(0, 0, image=load, anchor=tk.NW) 42 43 44 45 46 47textField = tk.Entry(canvas, justify='center', width=15, font=('Franklin Gothic Medium', 40, 'bold')) 48textField.pack(pady=20) 49 50 51 52textField.bind('<Return>', getPokemon) 53 54 55label = tk.Label(canvas, font=('Franklin Gothic Medium', 40, 'bold')) 56label.pack() 57 58 59canvas.mainloop() 60 61 62
試したこと
補足情報(FW/ツールのバージョンなど)
ダウンロードした画像を別プログラムで直接ファイル名を指定してimage_createしたら表示はされました。
37行目「image_file = name + ".png"」にしても結果は変わらず、これによってでてきたエラー分もありません。
コードの一部分がコードブロックからはずれてインデントがなくなっていますので修正ください。
あとちょっと気になるのは
「name = json_data['name']」して「file_path = './' + name + '.png'」しているnameと
「pokemon = textField.get()」して「image_file = pokemon + ".png"」しているpokomonは
同じ文字列が入っている?でしょうか。
pokemonとして入力した文字がnameと同じでないと、ダウンロードもできない状態になるはずなので、同じ文字列のはずです。
試しに「image_file = name + ".png"」にして実行してみましたが、結果は同じくです。。。

回答1件
あなたの回答
tips
プレビュー