Я нашел отличный способ сделать это, который действительно полезен. Для этого вам понадобится модуль PIL. Вот код:
from PIL import ImageGrab
def getter(widget):
x=root.winfo_rootx()+widget.winfo_x()
y=root.winfo_rooty()+widget.winfo_y()
x1=x+widget.winfo_width()
y1=y+widget.winfo_height()
ImageGrab.grab().crop((x,y,x1,y1)).save("file path here")
Что вы делаете, это передаете имя виджета в функцию. Команда root.winfo_rootx()
и root.winfo_rooty()
получают позицию в верхнем левом углу окна root
в пикселях.
Затем добавляются widget.winfo_x()
и widget.winfo_y()
, в основном просто получают координату пикселя верхнего левого пикселя виджета, который вы хотите захватить (в пикселях (x, y) вашего экрана).
Затем я нахожу (x1, y1), который является нижним левым пикселем виджета. ImageGrab.grab()
создает экран печати, и я затем обрезаю его, чтобы получить только бит, содержащий виджет. Хотя он не идеален и не создаст наилучшего возможного изображения, это отличный инструмент для получения изображения любого виджета и его сохранения.
Если у вас есть какие-либо вопросы, оставьте комментарий! Надеюсь, это помогло!