前提・実現したいこと
tkinterを使用してcanvas内に任意の画像のヒートマップを表示させています。
この時、開くボタンから別の画像を表示させると前回のデータが残っており、Figureが重なってしまいます。
一度、前回データを初期化し、重ならないように出来ないでしょうか。
該当のソースコード
#ライブラリを取り込む import tkinter as tk from tkinter import filedialog import cv2 from PIL import Image, ImageTk import os import numpy as np from matplotlib import pylab as plt from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk) # coding: utf-8 img = None #初期化 filepath = None #初期化 #メインウインドウを作成 win = tk.Tk() win.title("輝度ヒートマップ")#タイトル win.geometry("830x600")#サイズ #パーツを配置 #ラベル1を作成 label1 = tk.Label(text='■画像読込') label1.place(x=10, y=10) #ラベル2を作成 label2 = tk.Label(text='ファイル名:') label2.place(x=10, y=40) #ファイルパスの表示欄を作成 input_box1 = tk.Entry(width=75, bd=4) input_box1.place(x=80, y=40) #参照ボタンの動作 def file_select(): global filepath #グローバル宣言 #ファイルパスを表示欄に表示 idir = r'C:\descktop' filetype = [("すべて","*")] filepath = tk.filedialog.askopenfilename(filetypes = filetype, initialdir = idir) input_box1.delete(0, tk.END) input_box1.insert(0, filepath) #選択したファイルを表示 if filepath and os.path.isfile(filepath): #グレースケールに変換 #ヒートマップで表示 global img #グローバル宣言 img = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE) fig = plt.figure() plt.imshow(img,cmap="jet") plt.colorbar() #メインウィンドウにfig表示 canvas = FigureCanvasTkAgg(fig, master=win) toolbar = NavigationToolbar2Tk(canvas, win) canvas.get_tk_widget().place(x=20, y=100) #ボタン1を作成 button1 = tk.Button(text="開く", command=file_select, width=8, bd=4) button1.place(x=630, y=35) #GUIをそのまま表示 win.mainloop()
試したこと
canvas.deleteやfig.clf()等試しましたが上手く機能しませんでした。
補足情報(FW/ツールのバージョンな)
OS:Windows8
Python3.6.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。