質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

2145閲覧

tkinterでcanvasに画像が表示されない問題について

trafalbad

総合スコア303

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2021/09/10 11:15

編集2021/09/10 11:16

tkinterで以下のコードを使ったのですが、canvas内に画像が表示されません。

self.canvasのコードに何か間違いがあると思うのですが、どこが間違ってるかご教授いただけないでしょうか?

参考にしたもとサイト

python

1import tkinter as tk 2import glob 3from PIL import Image, ImageTk, ImageOps, ImageDraw 4import shutil 5import os 6 7SIZE=600 8cnt = 1 9 10class Application(tk.Frame): 11 def __init__(self, master = None): 12 super().__init__(master) 13 14 self.master.geometry('840x840') 15 self.master.title("image select") 16 17 self.pngs = 'images/dog2.png' 18 img1 = Image.open(self.pngs) 19 img1 = img1.resize((SIZE, SIZE)) 20 gazou = ImageTk.PhotoImage(img1) 21 22 self.canvas = tk.Canvas(self.master, width=SIZE,height=SIZE,bg="black") 23 self.canvas.create_image(0, 0, image=gazou, anchor=tk.NW) 24 self.canvas.pack() 25 26 self.master.bind("<ButtonPress-1>",self.Push) 27 self.master.bind("<ButtonRelease-1>",self.Release) 28 self.master.bind("<Button1-Motion>",self.Motion) 29 30 def Push(self, event): 31 global x_start,y_start 32 x_start = event.x 33 y_start = event.y 34 self.canvas.create_rectangle(x_start,y_start,x_start+1,y_start+1,outline="red",tag="rect") 35 36 #コールバック関数:タッチパッドから指を離したとき 37 def Release(self, event): 38 global x_end,y_end,cnt 39 x_end = event.x 40 y_end = event.y 41 self.canvas.create_rectangle(x_start,y_start,x_end,y_end,outline="red") 42 img = Image.open(self.pngs) 43 img = img.resize((SIZE, SIZE)) 44 img.crop((x_start,y_start,x_end,y_end)).save(f"ocr_images/{cnt}.png") 45 cnt = cnt + 1 46 47 #コールバック関数:タッチパッド上で指を動かしている時 48 def Motion(self, event): 49 x_end = event.x 50 y_end = event.y 51 self.canvas.coords("rect",x_start,y_start,x_end,y_end) 52 53 54if __name__ == "__main__": 55 OCR_FOLDER='ocr_images' 56 if os.path.exists(OCR_FOLDER): 57 shutil.rmtree(OCR_FOLDER) 58 os.makedirs(OCR_FOLDER) 59 root = tk.Tk() 60 app = Application(master = root) 61 app.mainloop() 62 63 64

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ローカル変数gazouではなく、インスタンス変数かグローバル変数に画像への参照を保持してください。

diff

1- gazou = ImageTk.PhotoImage(img1) 2+ self.gazou = ImageTk.PhotoImage(img1) 3 4 self.canvas = tk.Canvas(self.master, width=SIZE,height=SIZE,bg="black") 5- self.canvas.create_image(0, 0, image=gazou, anchor=tk.NW) 6+ self.canvas.create_image(0, 0, image=self.gazou, anchor=tk.NW)

投稿2021/09/10 13:49

編集2021/09/10 13:55
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問