Я создаю графический интерфейс с использованием TKinter, главное окно может открывать новые экземпляры самого себя из своего главного меню.
Это работает, однако, когда я создаю новый экземпляр окна, изображение, которое должно появиться на холсте, не появляется. Кто-нибудь может помочь?
Это мой код GUI:
class MainPage:
def __init__(self, master):
master.title("EIL Viewer")
master.geometry('1000x650')
#creating the main menu
master.option_add('*tearOff', False)
mainmenu = Menu(master)
master.configure(menu = mainmenu)
File = Menu(mainmenu)
mainmenu.add_cascade(menu= File, label = 'File')
#setting up commands for main menu
File.add_command( label = 'New Window', command = lambda: New() , accelerator = 'Ctrl + N')
#creating the canvas on the window
self.canvas = Canvas(master)
self.canvas.pack()
self.canvas.pack_configure(fill= BOTH, expand = True)
self.canvas.config(width=300, height= 500,background = 'white')
#setting the image on the canvas
photo = PhotoImage( file = 'C:/Users/Admin/Documents/Untitled Folder/sampleimage.png')
self.canvas.img = photo #here I am storing the image to the canvas so that it stays in the memory
self.image = self.canvas.create_image(150,150, image = self.canvas.img)
Вот как я кодирую функцию, которая открывает новый экземпляр из главного меню:
#setting n = 0 counter to distinguish the different windows
n = 0
def New():
n = Tk()
mainpage = MainPage(n)
n.mainloop()
n = n + 1
Причина, по которой я установил счетчик n = n + 1, заключается в том, что каждый раз, когда вызывается новый экземпляр моего окна, он не запускает окно, проходящее одно и то же главное окно. Это лишнее?
Когда я пытаюсь запустить команду New window из меню, я получаю следующую ошибку относительно изображения, загруженного на холст:
Exception in Tkinter callback
Traceback (most recent call last):
File "<ipython-input-3-803bc8733dc3>", line 60, in <lambda>
File.add_command( label = 'New Window', command = lambda: New() , accelerator = 'Ctrl + N')
File "<ipython-input-3-803bc8733dc3>", line 1425, in New
mainpage = MainPage(n)
File "<ipython-input-3-803bc8733dc3>", line 480, in __init__
self.eil = self.canvas.create_image(150,150, image = self.canvas.img)
File "C:\Users\Camilla Tac\Anaconda3\lib\tkinter\__init__.py", line 2483, in create_image
return self._create('image', args, kw)
File "C:\Users\Camilla Tac\Anaconda3\lib\tkinter\__init__.py", line 2474, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: image "pyimage16" doesn't exist
Может кто-нибудь помочь мне решить эту проблему ???