У меня есть следующий упрощенный код из моего проекта. Моя ошибка заключается в строке
self.displayimg = tk.Button(self.frame, text = 'Display', width = 25, command = lambda: show)
. Сообщение spyder об ошибке дает мне сообщение о том, что имя «show» не определено, хотя это функция, которую я четко определил в классе.
from PIL import Image, ImageTk
import matplotlib.pyplot as plt
x = 100
y = 100
xtmi = 200
xtma = 205
xs = 1024
ytmi = 500
ytma = 505
ys = 768
xarr = np.zeros(x)
yarr = np.zeros(y)
output = np.meshgrid(xarr,yarr)
output=output[0]
def mkPIL(array):
im = Image.fromarray(np.uint8(array))
return im
im = mkPIL(output)
plt.imshow(im, cmap='gray')
import tkinter as tk
from tkinter import Canvas, Label
root = tk.Tk()
root.mainloop()
class Manipulation:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.frame.pack()
self.kill = tk.Button(self.frame, text = 'Kill', width = 25, command = self.close)
self.kill.pack()
self.displayimg = tk.Button(self.frame, text = 'Display', width = 25, command = lambda: show)
self.displayimg.pack()
def close(self):
self.master.destroy()
def show():
img = ImageTk.PhotoImage(im)
panel = Label(root, image=im)
panel.image = img
panel.place(x=0,y=0)