Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python과 Tkinter로 창 스크린샷 캡처하는 방법


Python은 풍부한 모듈과 함수 라이브러리를 제공하여 다양한 기능을 갖춘 애플리케이션을 손쉽게 개발할 수 있습니다. Tkinter는 GUI 기반 애플리케이션을 만드는 데 가장 널리 쓰이는 Python 표준 라이브러리 중 하나입니다. 창의 스크린샷을 캡처하는 애플리케이션을 만들려면 Tkinter로 GUI를 구성하고, 화면 캡처를 담당하는 pyautogui, 이미지 처리를 담당하는 Pillow(PIL) 라이브러리를 함께 활용하면 됩니다.

시작하기 전에 아래 명령으로 필요한 패키지를 설치하세요.

pip install pillow pyautogui

애플리케이션이 동작하는 흐름은 다음과 같습니다.

  • 필수 라이브러리 – 이미지 처리를 위한 Pillow(PIL), 파일명 무작위화와 시간(epoch) 처리를 위한 Python의 time 모듈, 실제 화면 캡처를 위한 pyautogui

  • 창 안에 Label 위젯을 생성하고, 스크린샷을 실행할 Button을 추가합니다.

  • 창의 스크린샷을 찍어 로컬 디렉터리에 저장하는 screenshot() 함수를 정의합니다.

  • 스크린샷 이미지에 Tkinter 창 자체가 함께 찍히지 않도록 withdraw() 함수로 캡처 순간에만 창을 잠시 숨깁니다.

예제 코드

# 필요한 라이브러리 가져오기
from tkinter import *
import time
from PIL import ImageTk, Image
import pyautogui as pg

# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()

# 윈도우 크기 설정
win.geometry("700x350")

# 스크린샷을 찍는 함수 정의
def screenshot():
    random = int(time.time())
    filename = "C:/Users/Sairam/Documents/" + str(random) + ".jpg"
    ss = pg.screenshot(filename)
    ss.show()
    win.deiconify()

def hide_window():
    # 스크린샷을 찍는 동안 tkinter 창 숨기기
    win.withdraw()
    win.after(1000, screenshot)

# Label 위젯 추가
Label(win, text="버튼을 클릭하면 스크린샷이 저장됩니다", font=('Times New Roman', 18, 'bold')).pack(pady=10)

# 스크린샷을 찍는 버튼 생성
button = Button(win, text="스크린샷 찍기", font=('Aerial 11 bold'), background="#aa7bb1", foreground="white", command=hide_window)
button.pack(pady=20)

win.mainloop()

실행 결과

위 코드를 실행하면 안내 문구가 담긴 Label과 스크린샷 버튼이 있는 창이 표시됩니다.

Python과 Tkinter로 창 스크린샷 캡처하는 방법

버튼을 클릭하면 현재 화면 전체의 스크린샷이 캡처되어 지정한 로컬 디렉터리에 저장됩니다. 파일명은 현재 시간 값을 정수로 변환해 붙이기 때문에 매번 새로운 이름으로 저장되며, 캡처가 끝나면 deiconify() 호출로 숨겨졌던 Tkinter 창이 다시 나타납니다.

Python과 Tkinter로 창 스크린샷 캡처하는 방법

참고 사항

  • filename의 저장 경로는 자신의 환경에 맞게 수정하세요. Windows에서도 슬래시(/)를 사용하면 백슬래시 이스케이프 문제를 피할 수 있습니다.
  • 캡처 범위를 특정 영역으로 제한하려면 pg.screenshot(region=(x, y, width, height)) 옵션을 활용할 수 있습니다.