前提・実現したいこと
自分で作ろうとしているクイズ形式のプログラムなのですが
実行すると以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "kime4.py", line 11, in <module> img = ImageTk.PhotoImage(file='hasira.png') File "C:\Anaconda3\lib\site-packages\PIL\ImageTk.py", line 89, in __init__ image = _get_image_from_kw(kw) return Image.open(source) File "C:\Anaconda3\lib\site-packages\PIL\Image.py", line 2809, in open fp = builtins.open(filename, "rb") FileNotFoundError: [Errno 2] No such file or directory: 'hasira.png' Exception ignored in: <function PhotoImage.__del__ at 0x00000204BAC8D438> Traceback (most recent call last): File "C:\Anaconda3\lib\site-packages\PIL\ImageTk.py", line 118, in __del__ name = self.__photo.name AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'
該当のソースコード
import tkinter as tk from PIL import Image, ImageTk from tkinter import PhotoImage def raise_frame(frame): frame.tkraise() root = tk.Tk() root.title("テスト") img = ImageTk.PhotoImage(file='hasira.png') f1 = tk.Frame(root,width=680, height=480, bg="white") label= tk.Label(f1, image=img).pack() label1=tk.Label(f1, text="", font=("",30)).pack() button1=tk.Button(f1, text="スタート", font=("",30), command=lambda:raise_frame(f2)).pack() f2 = tk.Frame(root,width=680, height=480, bg="black") label= tk.Label(f2, image=img).pack() Label1 = tk.Label(f2, text="女性ですか?男性ですか? (1:男性、2:女性)", font=("",30), bg="white") Label1.pack() #ボタン配置 button = tk.Button(f2, text="男性", font=("", 24),command=lambda:raise_frame(f3)).pack(padx=200, side="left") button1 = tk.Button(f2, text="女性", font=("", 24),command=lambda:raise_frame(f3)).pack(padx=200, side= 'right') f3 = tk.Frame(root,width=680, height=480, bg="skyblue") label2= tk.Label(f3, image=img).pack() Label3 = tk.Label(f3, text="傷がありますか?", font=("",30), bg="white") Label3.pack() #ボタン配置 button = tk.Button(f3, text="ある", font=("", 24),command=lambda:raise_frame(f4)).pack(padx=200, side="left") button1 = tk.Button(f3, text="ない", font=("", 24),command=lambda:raise_frame(f4)).pack(padx=200, side= 'right') gyoumei = ImageTk.PhotoImage(file = "gyoumei.png") f4 = tk.Frame(root,width=680, height=480, bg="red") label5 = tk.Label(f4, text="", font=("",30)) label= tk.Label(f4, image=gyoumei).pack() label5.pack() button3 = tk.Button(f4, text='戻る', font=("",30), command=lambda:raise_frame(f1)).pack() #f3 = tk.Frame(root,width=680, height=480, bg="red") #button3 = tk.Button(f3, text='戻る', font=("",30), command=lambda:raise_frame(f1)).pack(fill = "both", padx=100, pady=200, expand=True) for frame in (f1, f2, f3, f4): frame.grid(row=0, column=0, sticky='news') raise_frame(f1) root.mainloop()
試したこと
Googleなどで調べてもいまいちわからなかったのでなぜこうなってしまうのかこれを付け加えるとできるなどアドバイスがあればお願いします!
補足情報(FW/ツールのバージョンなど)
プログラムはpythonで使っているソフトはビジュアルスタジオコードです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 07:45
2020/07/07 08:16