Skip to content
toylee blog · 컴퓨터, 프로그램 정보 공유

toylee blog · 컴퓨터, 프로그램 정보 공유

python tkinter 디지털 서명 패드 만들기

toylee, 2023년 07월 09일

디지털 서명은 현대의 디지털 시대에서 중요한 역할을 합니다. 기존의 종이 위에 서명을 하는 방식에서 벗어나, 전자적인 형태로 서명을 생성하고 저장할 수 있는 디지털 서명 패드는 다양한 분야에서 사용되고 있습니다. 이번 글에서는 Python의 Tkinter 라이브러리를 활용하여 간단한 디지털 서명 패드를 만드는 방법에 대해 알아보겠습니다.

[목차]

  • Tkinter 라이브러리 설치하기
  • 필요한 라이브러리 가져오기
  • 기본 윈도우 생성하기
  • 캔버스 생성하기
  • 서명 기능 추가하기
  • 서명 저장하기
  • 실행하기
  • 전체코드보기

Tkinter 라이브러리 설치하기

Tkinter는 Python의 표준 GUI (그래픽 사용자 인터페이스) 패키지로, 대부분의 Python 배포판에 기본적으로 포함되어 있습니다. 따라서 별도의 설치가 필요하지 않습니다.

필요한 라이브러리 가져오기

디지털 서명 패드를 만들기 위해 다음과 같은 라이브러리를 사용합니다.

from tkinter import *
from PIL import Image, ImageDraw

기본 윈도우 생성하기

Tkinter를 사용하여 기본적인 윈도우를 생성합니다.

window = Tk()
window.title("디지털 서명 패드")

캔버스 생성하기

패드를 그리기 위해 캔버스를 생성합니다.

canvas_width = 400
canvas_height = 400
canvas = Canvas(window, width=canvas_width, height=canvas_height, bg="white")
canvas.pack()

서명 기능 추가하기

마우스 이벤트를 처리하여 사용자의 서명을 받을 수 있도록 기능을 추가합니다.

def draw(event):
    x, y = event.x, event.y
    canvas.create_oval(x, y, x+2, y+2, fill="black")

canvas.bind("<B1-Motion>", draw)

서명 저장하기

사용자가 서명을 완료하면, 이미지 파일로 저장합니다.

def save_signature():
    canvas.update()
    signature_image = Image.new("RGB", (canvas_width, canvas_height), "white")
    draw = ImageDraw.Draw(signature_image)
    draw.rectangle([(0, 0), (canvas_width, canvas_height)], fill="white")
    draw.rectangle([(10, 10), (canvas_width - 10, canvas_height - 10)], outline="black")
    signature_image.save("signature.png")

save_button = Button(window, text="서명 저장", command=save_signature)
save_button.pack()

실행하기

마지막으로 생성한 윈도우를 실행합니다.

window.mainloop()

위의 단계를 따라가면 Python Tkinter를 사용하여 간단한 디지털 서명 패드를 만들 수 있습니다. 이 패드를 사용하여 사용자의 서명을 받고 저장할 수 있으며, 이를 활용하여 다양한 프로젝트나 응용 프로그램을 개발할 수 있습니다. 디지털 서명은 보안과 신뢰성을 갖춘 전자 문서 처리를 위해 중요한 도구이므로, 이를 활용하는 데에 많은 가치가 있습니다.

전체코드보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from tkinter import *
from PIL import Image, ImageDraw
 
def draw(event):
    x, y = event.x, event.y
    canvas.create_oval(x, y, x+2, y+2, fill=“black”)
 
def save_signature():
    canvas.update()
    signature_image = Image.new(“RGB”, (canvas_width, canvas_height), “white”)
    draw = ImageDraw.Draw(signature_image)
    draw.rectangle([(0, 0), (canvas_width, canvas_height)], fill=“white”)
    draw.rectangle([(10, 10), (canvas_width – 10, canvas_height – 10)], outline=“black”)
    signature_image.save(“signature.png”)
 
window = Tk()
window.title(“디지털 서명 패드”)
 
canvas_width = 400
canvas_height = 400
canvas = Canvas(window, width=canvas_width, height=canvas_height, bg=“white”)
canvas.pack()
 
canvas.bind(“<B1-Motion>”, draw)
 
save_button = Button(window, text=“서명 저장”, command=save_signature)
save_button.pack()
 
window.mainloop()
 
Colored by Color Scripter
cs

실행화면

이 코드를 실행하면 Tkinter를 사용하여 디지털 서명 패드를 만들 수 있습니다. 패드에 서명을 하고 “서명 저장” 버튼을 클릭하면 signature.png라는 이름의 이미지 파일로 서명이 저장됩니다. 해당 파일은 실행한 스크립트와 같은 위치에 저장됩니다.

[관련글]

AWS PyQt6 활용 클라우드 네이티브 GUI 구축
파이썬 주석 처리 방법 및 사용 이유

PyQt6를 사용한 GUI 애플리케이션 개발과 DevOps

PyQt6 Kubernetes 사용 클라우드 네이티브 GUI 구축

파이썬

글 내비게이션

Previous post
Next post

Related Posts

파이썬

파이썬 PyQt6 DB 접속 (SQLite, MySQL, PostgreSQL)

2023년 06월 15일

파이썬 PyQt6 DB SQLite MySQL PostgreSQL 접속 및 연결 방법에 대해서 파이큐티레 라이브러리를 활용하여 각각 예제를 통해서 공부해 봅시다. sqlite를 제외한 나머지는 sql 계정이 있어야 접속 가능합니다.

Read More

하드 디스크 파티션 합치기

2024년 12월 07일

하드 디스크 파티션 합치기는 컴퓨터의 저장 공간 관리에 있어 중요한 과정입니다. 많은 사용자들이 하드 디스크의 용량을 최적화하고 자유로운 공간을 확보하기 위해 이러한 작업을 수행합니다. 파티션은 데이터의 조직화를 도와주지만, 때로는 여러 개의 작은 파티션이 불편함을 초래할 수 있습니다. 이러한 경우, 파티션을 합치는 것이 효율적일 수 있습니다. 이번 글에서는 하드 디스크 파티션을…

Read More
파이썬

파이썬 웹크롤링(crawling), PyQt6, BeautifulSoup

2023년 06월 19일

파이썬 웹크롤링 (crawling)를 통해 데이터 분석, 콘텐츠 스크래핑 또는 지능형 시스템 구축을 해야하는 경우가 많습니다. 웹크롤링은 다양한 프로그래밍 언어와 라이브러리를 사용하여 수행할 수 있지만, 그것을 Python Pyqt6 그래픽 사용자 인터페이스(GUI)와 결합하면 완성도 높은 프로그램을 제작 할 수 있습니다.

Read More

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • usb 쓰기금지 해제방법, 어렵지 않아요
  • usb a타입에 대해 알아보자
  • 포토샵 누끼따기 방법
  • vpn 연결방법 쉽게 설명해드립니다.
  • usb 장치 인식 실패시 해결방안

최신 댓글

  1. 윈도우 단축키 모음 Best5의 ace
  2. http https 차이의 챗GPT 란? · Working for you

보관함

  • 2025년 6월
  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • flutter
  • html
  • linux
  • macbook
  • Pc Useful Tips
  • 미분류
  • 워드프레스
  • 자바(Java)
  • 파이썬
  • 프로그래밍
©2025 toylee blog · 컴퓨터, 프로그램 정보 공유 | WordPress Theme by SuperbThemes