본문 바로가기

Python/개별프로그래밍

🔍 SimpleZoom - 화면 확대 프로그램

반응형
SMALL
SimpleZoom - 화면 확대 프로그램

🔍 SimpleZoom - 화면 확대 프로그램

📌 소개

SimpleZoom은 특정 화면 영역을 확대하여 보여주는 Python 기반의 프로그램입니다.
고정된 화면 영역을 실시간으로 확대하며, 마우스 휠을 이용해 배율을 조절할 수 있습니다.
또한 투명도를 조절하는 기능이 있어, 사용자에게 편리한 사용 환경을 제공합니다.

🚀 기능 소개

  • 지정된 화면 영역 확대: 특정 영역을 실시간으로 캡처하여 확대된 화면을 표시합니다.
  • 마우스 휠을 통한 배율 조절: 마우스 휠을 위/아래로 움직여 확대 비율을 변경할 수 있습니다.
  • 투명도 조절: 슬라이더를 이용해 프로그램의 투명도를 조절할 수 있습니다.
  • 단축키 지원: ESC 키를 눌러 프로그램을 종료할 수 있습니다.

🛠️ 코드 설명

아래는 SimpleZoom 프로그램의 전체 코드입니다.

📜 Python 코드

import tkinter as tk
from tkinter import ttk
from pyautogui import position
from PIL import Image, ImageTk, ImageGrab

class SimpleZoom(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("SimpleZoom - 화면 확대 프로그램")
        self.geometry("400x300")
        self.ratio = 4  # 확대 배율
        self.new_image = None
        self.fixed_region = (1650, 810, 1919, 1079)  # 고정된 영역 좌표
        self.init_ui()
        self.update_zoom()

    def init_ui(self):
        self.state_label = tk.Label(self, text="X2.0 | Fixed Position")
        self.state_label.pack()
        
        self.label_img = tk.Label(self, image=None)
        self.label_img.pack()

        self.bind('', self.key_pressed)
        self.bind('', self.mouse_wheel)
        self.bind('', self.mouse_wheel)
        self.bind('', self.mouse_wheel)
        
        self.transparency_slider = ttk.Scale(self, from_=0.1, to=1.0, 
                                             orient='horizontal', command=self.set_transparency)
        self.transparency_slider.set(1.0)
        self.transparency_slider.pack()
        
    def update_zoom(self):
        self.state_label.config(text=f'X{self.ratio} | Fixed Position')

        ss_img = ImageGrab.grab(self.fixed_region)
        resized_image = ss_img.resize((round((self.fixed_region[2] - self.fixed_region[0]) * self.ratio),
                                       round((self.fixed_region[3] - self.fixed_region[1]) * self.ratio)), Image.LANCZOS)
        
        self.new_image = ImageTk.PhotoImage(resized_image)
        self.label_img.config(image=self.new_image)
        
        self.after(100, self.update_zoom)

    def key_pressed(self, event):
        if event.keysym == "Escape":
            self.destroy()

    def mouse_wheel(self, event):
        if event.num == 5 or event.delta == -120:
            self.ratio = max(1.0, round(self.ratio - 0.1, 2))
        elif event.num == 4 or event.delta == 120:
            self.ratio = round(self.ratio + 0.1, 2)
        
    def set_transparency(self, value):
        self.attributes('-alpha', float(value))

if __name__ == "__main__":
    app = SimpleZoom()
    app.mainloop()
    

📖 코드 설명

1️⃣ 프로그램 초기화

SimpleZoom 클래스는 Tkinter의 tk.Tk를 상속받아 GUI 애플리케이션을 생성합니다.
초기화 시 창의 크기, 제목, 확대 배율, 고정된 영역 좌표를 설정하고 UI를 구성합니다.

2️⃣ UI 구성

  • 확대된 이미지를 표시하는 라벨: 확대된 화면을 실시간으로 업데이트합니다.
  • 배율 상태 표시: 현재 확대 배율을 보여주는 라벨을 표시합니다.
  • 투명도 조절 슬라이더: 프로그램 창의 투명도를 조절할 수 있습니다.

3️⃣ 화면 확대 및 업데이트

update_zoom() 함수는 고정된 영역을 주기적으로 캡처하여 확대된 이미지를 표시합니다.
스크린샷을 찍고, 사용자가 설정한 배율로 이미지를 리사이징하여 GUI에 업데이트합니다.

4️⃣ 배율 조절

마우스 휠을 위/아래로 스크롤하면 확대 배율이 증가/감소하도록 구현되었습니다.

5️⃣ 투명도 조절

슬라이더를 조절하여 프로그램 창의 투명도를 조절할 수 있습니다.

💡 실행 방법

  1. Python이 설치된 환경에서 실행하세요.
  2. 필요한 라이브러리 설치: pip install pillow pyautogui
  3. Python 파일을 실행하면 프로그램이 시작됩니다.
  4. ESC 키를 누르면 프로그램이 종료됩니다.

🖼️ 프로그램 실행 화면

🔖 태그

#Python #Tkinter #PIL #화면확대 #PythonGUI #프로그램개발 #코딩 #스크린줌

반응형
LIST