@117kd

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pythonのtkinterで画像を表示したい

解決したいこと

pythonのtkinterで、canvas上に画像を表示させようとしているのですが、classを使ってコードを書くと画像が表示されません。
下の二個目のコードだといけたので、classの使い方に問題があるように思います。

classについてあまり自信がないので、詳しい解説をいただきたいです。

画像が表示されないコード

import tkinter as tk

class test():
    def __init__(self, a):
        self.frame = tk.Frame()
        self.frame.pack()
        self.canvas = tk.Canvas(self.frame, width = 500, height = 300)
        self.canvas.pack()
        self.img = tk.PhotoImage(file = 'Pig.png')
        self.canvas.create_image(0, 0, image = self.img)

if __name__ == "__main__":
    app = tk.Tk()
    test(app)
    app.mainloop()

↑エラーは出ず、何もないcanvasだけ表示されます。

このコードだと画像が表示されます

import tkinter as tk

app = tk.Tk()

frame = tk.Frame()
frame.pack()
canvas = tk.Canvas(frame, width = 500, height = 300)
canvas.pack()
img = tk.PhotoImage(file = 'Pig.png')
canvas.create_image(0, 0, image = img)

app.mainloop()
0 likes

1Answer

↓これでどうですか?

import tkinter as tk

class test():
    def __init__(self, a):
        self.frame = tk.Frame()
        self.frame.pack()
        self.canvas = tk.Canvas(self.frame, width = 500, height = 300)
        self.canvas.pack()
        self.img = tk.PhotoImage(file = 'Pig.png')
        self.canvas.create_image(0, 0, image = self.img)

if __name__ == "__main__":
    app = tk.Tk()
-   test(app)
+   a = test(app)
    app.mainloop()
2Like

Comments

  1. @117kd

    Questioner

    画像出ました
    ありがとうございます!

  2. 解決したようでしたら、質問をクローズにするといいですよ。

Your answer might help someone💌