前提・実現したいこと
python初心者です。
tkinterを使った勉強をしています。
文字列を入力し、検索ボタンを押すと、下にその文字列と同じ名前を持った画像をcanvasに表示させるというものを作りたいです。
画像ファイルは同じディレクトリ内に入っています
画像ファイルの名前と同じ文字列を打ち込み、検索ボタンを押すとエラーを吐きます。
どなたか助けてください。。。
よろしくお願いします。。。
発生している問題・エラーメッセージ
Exception in Tkinter callback Traceback (most recent call last): File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2288.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1892, in __call__ return self.func(*args) File "C:\Users\HIO\Documents\Python Scripts\glob\button.py", line 14, in Img_display img = ImageTk.PhotoImage(file=img_data,width=300,height=300) File "C:\Users\HIO\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PIL\ImageTk.py", line 89, in __init__ image = _get_image_from_kw(kw) File "C:\Users\HIO\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PIL\ImageTk.py", line 58, in _get_image_from_kw return Image.open(source) File "C:\Users\HIO\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PIL\Image.py", line 2984, in open prefix = fp.read(16) File "C:\Users\HIO\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PIL\Image.py", line 546, in __getattr__ raise AttributeError(name) AttributeError: read
該当のソースコード
python
1import tkinter as tk 2import tkinter.ttk as ttk 3from PIL import Image,ImageTk 4 5def Img_display(): 6 #受け取りはできてる 7 char = entry_char.get() + ".png" 8 #表示もできる 9 img_data = Image.open(char) 10 11 canvas = tk.Canvas(root, bg="#FFFFFF",height = 500,width=500) 12 canvas.place(x=0,y=30) 13 14 img = ImageTk.PhotoImage(file=img_data,width=300,height=300) 15 canvas.create_image(30,30,image=img,anchor=tk.NW) 16 17#rootメインウィンドウの設定 18root = tk.Tk() 19root.title("root") 20root.minsize(800,800) 21 22#メインフレームの作成と設置 23frame = ttk.Frame(root) 24frame.pack(fill=tk.BOTH,padx=20,pady=10) 25 26#ウィジェットの作成 27label_char = ttk.Label(frame,text="検索画像名:") 28entry_char = ttk.Entry(frame) 29button_search = ttk.Button(frame, text="検索",command=Img_display) 30 31#ウィジェットの設置 32label_char.grid(row=0,column=0) 33entry_char.grid(row=0,column=1) 34button_search.grid(row=0,column=2) 35 36root.mainloop()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。