実現したいこと
tkinterライブラリを使って画像を表示したい。
発生している問題・分からないこと
『Pythonでつくるゲーム開発 入門講座』という本を使ってpythonを勉強しています。付録のコードをそのまま張り付けて実行したのですが、エラーが出てしまいます。前回もteratailで同様の質問をして、その時は解決したのですが、また画像が表示できなくなりました。
エラーメッセージ
error
1Traceback (most recent call last): 2 3 File "c:\Users\PC_User\Desktop\サンプル\pyge.py", line 30, in <module> 4 5 gazou = tkinter.PhotoImage(file="sumire.png") 6 7 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8 9 File "C:\Program Files\Python312\Lib\tkinter\__init__.py", line 4140, in __init__ 10 11 Image.__init__(self, 'photo', name, cnf, master, **kw) 12 13 File "C:\Program Files\Python312\Lib\tkinter\__init__.py", line 4087, in __init__ 14 15 self.tk.call(('image', 'create', imgtype, name,) + options) 16 17_tkinter.TclError: couldn't open "sumire.png": no such file or directory 18 19PS C:\Users\PC_User>
該当のソースコード
import tkinter KEKKA = [ "前世がネコだった可能性は極めて薄いです。", "いたって普通の人間です。", "特別、おかしなところはありません。", "やや、ネコっぽいところがあります。", "ネコに近い性格のようです。", "ネコにかなり近い性格です。", "前世はネコだったかもしれません。", "見た目は人間、中身はネコの可能性があります。" ] def click_btn(): pts = 0 for i in range(7): if bvar[i].get() == True: pts = pts + 1 nekodo = int(100*pts/7) text.delete("1.0", tkinter.END) text.insert("1.0", "<診断結果>\nあなたのネコ度は" + str(nekodo) + "%です。\n" + KEKKA[pts]) root = tkinter.Tk() root.title("ネコ度診断アプリ") root.resizable(False, False) canvas = tkinter.Canvas(root, width=800, height=600) canvas.pack() gazou = tkinter.PhotoImage(file="sumire.png") canvas.create_image(400, 300, image=gazou) button = tkinter.Button(text="診断する", font=("Times New Roman", 32), bg="lightgreen", command=click_btn) button.place(x=400, y=480) text = tkinter.Text(width=40, height=5, font=("Times New Roman", 16)) text.place(x=320, y=30) bvar = [None]*7 cbtn = [None]*7 ITEM = [ "高いところが好き", "ボールを見ると転がしたくなる", "びっくりすると髪の毛が逆立つ", "ネズミの玩具が気になる", "匂いに敏感", "魚の骨をしゃぶりたくなる", "夜、元気になる" ] for i in range(7): bvar[i] = tkinter.BooleanVar() bvar[i].set(False) cbtn[i] = tkinter.Checkbutton(text=ITEM[i], font=("Times New Roman", 12), variable=bvar[i], bg="#dfe") cbtn[i].place(x=400, y=160+40*i) root.mainloop()
試したこと・調べたこと
上記の詳細・結果
同じファイルの同じ階層に実行ファイルと画像を置いています。
にもかかわらず上記のようなエラーが出ます。
補足
以前質問をしたときは
gazou = tkinter.PhotoImage(file="sumire.png")を、
import os
gazou = tkinter.PhotoImage(file=os.path.join(os.path.dirname(file), "sumire.png"))
に置き換えて解決したのですが、またできなくなりました。

0 コメント