如何捕获tkinter窗口的截图并将其存储到文件中?

2024-04-19 07:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个功能,将截图特别是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)

我之所以对alt + screenshot使用pyautogui.keyDownUp,是因为这个单击函数只打印应用程序窗口。你知道吗

但有时当我单击按钮Save时,会出现一个错误:

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

有没有别的办法?还有一个更平滑的方法,点击一个按钮截屏tkinter窗口并存储jpg文件?你知道吗


Tags: 方法self功能imgtkintersavealt按钮
1条回答
网友
1楼 · 发布于 2024-04-19 07:17:15

您应该使用pyscreenshot

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

如果需要获取屏幕的一部分,可以使用该选项:

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

或使用Pillow中的ImageGrab从剪贴板保存:

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

这对我很有用:

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

注意grabclipboard只适用于Windows和Mac操作系统

相关问题 更多 >