Я пытаюсь показать разные фрагменты изображения, используя точки входа в tkinter. Однако, когда я ввожу новый номер среза, он создает изображение под предыдущим. Я не знаю, как удалить первый, чтобы освободить место для второго. A
Код следующий
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from tkinter import *
import numpy.ma as ma
import cv2
from os import listdir
from os.path import isfile, join
import ellipse as el
class mclass:
def __init__(self, window):
self.window = window
self.box = Entry(window)
self.button = Button (window, text="check", command=self.plot)
self.box.pack ()
self.button.pack()
def plot (self):
mypath='C:\\Users\\mehmet\\Desktop\\a1'
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
images = np.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
images[n] = cv2.imread( join(mypath,onlyfiles[n]),cv2.IMREAD_GRAYSCALE)
image = np.stack([images[i] for i in range(13,299)])
arr_size = (265,490,286)
sphere_center = (120,238,76)
a=11
b=10
c=12
sphere = el.create_bin_sphere(arr_size,sphere_center, a,b,c)
sphere1=255*sphere.astype(np.uint8)
sphere2=np.swapaxes(sphere1,0,2)
dst = cv2.bitwise_or(sphere2, image)
img_p=dst[:,:,int(self.box.get())]
fig = Figure(figsize=(3,3))
a = fig.add_subplot(111)
a.imshow(img_p,cmap='gray')
a.plot()
canvas = FigureCanvasTkAgg(fig, master=self.window)
canvas.get_tk_widget().pack(side="top")
canvas.draw()
window= Tk()
start= mclass (window)
window.mainloop()