Как сделать снимок экрана с окном tkinter и сохранить его в файл? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь создать функцию, которая будет снимать скриншоты именно с окна tkinter.

На данный момент это лучший метод, который я нашел на данный момент:

    def save():
        pyautogui.keyDown('alt')
        pyautogui.keyDown('printscreen')
        pyautogui.keyUp('printscreen')
        pyautogui.keyUp('alt')
        self.img = ImageGrab.grabclipboard()
        self.img.save('paste.jpg', 'JPEG')

self.dataSend = Button(main, text = "Send", command = save).grid(column = 1, row = 13, sticky = W)

Причина, по которой я использую pyautogui.keyDown и Up для alt + screenshot, потому что эта функция щелчка печати отображает только окно приложения.

Но иногда, когда я нажимаю кнопку Save, появляется ошибка:

    self.img.save('paste.jpg', 'JPEG')
AttributeError: 'NoneType' object has no attribute 'save'

Есть ли другие альтернативы этому?И есть более плавный способ скриншота окна tkinter при нажатии кнопки и сохранения файла jpg?

1 Ответ

0 голосов
/ 27 сентября 2019

Вы должны использовать pyscreenshot :

import pyscreenshot
pyscreenshot.grab().save('screenshot.png')

Если вам нужно получить часть экрана, вы можете использовать эту опцию:

im = pyscreenshot.grab(bbox=(10, 10, 510, 510))  # X1,Y1,X2,Y2
im.save('screenshot.png')

Или сохранить избуфер обмена с использованием ImageGrab из Подушка :

im = ImageGrab.grabclipboard()
im.save('screenshot.png')

У меня это работает:

pyautogui.hotkey('alt', 'printscreen')
img = ImageGrab.grabclipboard()
img.save('screenshot.png')

И заметка grabclipboard работает только для Windows и Mac OS

...