Я хочу отобразить свой скриншот в новом окне tkinter (TopLevel), но я не хочу сохранять его на ПК.Когда я сохраняю его, он работает нормально, но когда я пытаюсь загрузить скриншот из памяти, у меня появляется ошибка: изображение не существует.
Мое главное окно root = Tk()
Я вызываю эту функцию изкнопка:
def screenshot():
x = 500
y = 500
im1 = pyautogui.screenshot(region=(x, y, 100, 100))
im1.save('test.png')
New = Toplevel(root)
im1 = ImageTk.PhotoImage(Image.open("test.png"))
image1 = Label(New, image = im1)
image1.image = im1
image1.place(x=0, y=0)
И это работает хорошо, но когда я пытаюсь это сделать:
def screenshot():
x = 500
y = 500
im1 = pyautogui.screenshot(region=(x, y, 100, 100))
New = Toplevel(root)
image1 = Label(New, image = im1)
image1.image = im1
image1.place(x=0, y=0)
Я получил ошибку:
_tkinter.TclError: image "<PIL.Image.Image image mode=RGB size=100x100 at 0xB4367F0>" doesn't exist
Как я могу отобразить мой скриншотбез сохранения?
РЕДАКТИРОВАТЬ: я обойти свою проблему, используя os.remove
код выглядит следующим образом:
def screenshot():
x = 500
y = 500
im1 = pyautogui.screenshot(region=(x, y, 100, 100))
im1.save('test.png')
New = Toplevel(root)
im1 = ImageTk.PhotoImage(Image.open('test.png'))
image1 = Label(New, image = im1)
image1.image = im1
image1.place(x=0, y=0)
os.remove('test.png')
И это работает довольно хорошо, но я все еще заинтересован, если я могусделай это без im1.save
как-нибудь.Я довольно новичок в программировании, поэтому, пожалуйста, дайте мне подсказки, если мое решение в порядке.