前提・実現したいこと
Python のカレントフォルダについてよくわかりません。
Pythonでつくるゲーム開発入門講座の診断アプリを作成しているのですが、コード通りに打っても「ファイルが存在しない」と出ます。
tkinterで画像の出し方を検索してみたのですが、「同じファイルに入れる」というのがどうしても理解できません。どのようにすればいいでしょうか。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:/Users/User/Desktop/ooooooooooooooooooooooooooooo.py", line 27, in <module> gazou = tkinter.PhotoImage(file="sumire.png") File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 4093, in __init__ Image.__init__(self, 'photo', name, cnf, master, **kw) File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 4038, in __init__ self.tk.call(('image', 'create', imgtype, name,) + options) _tkinter.TclError: couldn't open "sumire.png": no such file or directory
該当のソースコード
Python
1import tkinter 2 3KEKKA = [ 4"前世が猫だった可能性は極めて低いです", 5"いたって普通の人間です", 6"特別、おかしなところはありません", 7"やや、猫っぽいとことがあります", 8"猫に近い性格のようです", 9"猫にかなり近い性格です", 10"前世は猫だったかもしれません", 11"見た目は人間、中身は猫の可能性があります" 12] 13def click_btn(): 14 pts = 0 15 for i in range(7): 16 if bvar[i].get() == True: 17 pts = pts + 1 18 nekodo = int(100*pts/7) 19 text.delete("1.0", tkinter.END) 20 texr.insert("1.0", "<診断結果>\nあなたの猫度は" + str(nekodo) + "です。\n" + KEKKA[pts]) 21 22root = tkinter.Tk() 23root.title("診断アプリ") 24root.resizable(False, False) 25canvas = tkinter.Canvas(root, width=800, height=600) 26canvas.pack() 27gazou = tkinter.PhotoImage(file="sumire.png") 28canvas.create_image(400, 300, image=gazou) 29 30button = tkinter.Button(text="診断する", font=("Times New Roman", 32), bg="lightgreenn", command=click_btn) 31button.plase(x=400, yy=480) 32text = tkinter.Text(width=40, height=5, font=("Times New Roman", 16)) 33text.place(x=320, y=30) 34 35bvar = [None]*7 36cbtn = [None]*7 37ITEM = [ 38"高いところが好き", 39"ボールを見ると転がしたくなる", 40"びっくりすると髪の毛が逆立つ", 41"ネズミのおもちゃが気になる", 42"匂いに敏感", 43"魚の骨にしゃぶりつきたくなる", 44"夜、元気になる", 45] 46for i in range(7): 47 bvar[i] = tkinter.BooleanVar() 48 bvar[i].set(False) 49 cbtn[i] = tkinter.Checkbutton(text=ITEM[i], font=("Time New Roman", 12), variable=bvar[i], bg="#dfe") 50 cbtn[i].place(x=400, y=160+40*i) 51root.mainloop() 52
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。