본문 바로가기

코딩 공부/파이썬

파이썬 그림판 만들기

📌 파이썬 그림판 GUI 만들기 (클립보드 붙여넣기 지원)

파이썬 Tkinter를 이용하면 간단한 그림판을 직접 만들 수 있습니다. 여기에 색상 선택, 도형 그리기, 클립보드 붙여넣기까지 추가해보겠습니다.

Tkinter 기본 구조

import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root,bg="white",width=800,height=600)
canvas.pack()
root.mainloop()

실행하면 흰색 캔버스가 열립니다. 이제 기능을 하나씩 붙여봅니다.

선 그리기

def start_draw(self,event):
    self.old_x,self.old_y=event.x,event.y
def drawing(self,event):
    if self.old_x and self.old_y:
        self.canvas.create_line(self.old_x,self.old_y,event.x,event.y,
            fill=self.pen_color,width=self.pen_width.get())
        self.old_x,self.old_y=event.x,event.y

색상 선택 & 미리보기

def choose_color(self):
    color=colorchooser.askcolor()[1]
    if color:
        self.pen_color=color
        self.color_preview.config(bg=self.pen_color)

도형(사각형/원)

def start_draw(self,event):
    self.old_x,self.old_y=event.x,event.y
    if self.draw_mode=="rect":
        self.shape_id=self.canvas.create_rectangle(event.x,event.y,event.x,event.y,
            outline=self.pen_color,width=self.pen_width.get())
    elif self.draw_mode=="oval":
        self.shape_id=self.canvas.create_oval(event.x,event.y,event.x,event.y,
            outline=self.pen_color,width=self.pen_width.get())

클립보드 붙여넣기

def paste_clipboard(self,event=None):
    try:
        img=ImageGrab.grabclipboard()
        if isinstance(img,Image.Image):
            img.thumbnail((400,400))
            self.imgtk=ImageTk.PhotoImage(img)
            self.canvas.create_image(100,100,image=self.imgtk,anchor="nw")
            self.image.paste(img,(100,100))
        else:
            messagebox.showwarning("경고","클립보드에 이미지 없음")
    except:
        messagebox.showerror("오류","불러오기 실페")

저장 기능

def save_image(self):
    file_path=filedialog.asksaveasfilename(defaultextension=".png",
        filetypes=[("PNG","*.png")])
    if file_path:
        self.image.save(file_path)
        messagebox.showinfo("저장","완료: "+file_path)

실행 화면 & 마무리

실행 화면

이렇게 만든 프로그램은 단순 낙서판 이상으로 활용이 가능합니다. 필기 메모, 이미지 붙여넣기 후 강조 표시 같은 작업에도 괜찮습니다. 완벽히 매끄럽진않지만 배우는 과정에서 재미있고 직접 만든 그림판이 돌아가는 게 뿌듯합니다. 더 발전시키면 자동저장, 브러시 스타일 같은 것도 추가할 수 있겠죠.

이렇게 만든 프로그램은 단순 낙서판 이상으로 활용할 수 있습니다. 메모, 이미지 붙여넣기 후 강조 표시 같은 작업에도 유용합니다. 더 발전시키면 자동저장이나 브러시 스타일 같은 것도 넣을 수 있습니다.

반응형