Python 을 사용한 QR 코드 생성기

PythonBeginner
지금 연습하기

소개

이 프로젝트는 Python 을 사용하여 QR 코드 생성기를 만드는 과정을 안내합니다. 프로젝트 파일을 생성하고, 필요한 라이브러리를 가져오고, QR 코드 생성 함수를 정의하고, QR 코드 저장 함수를 정의하며, QR 코드 생성기 인터페이스를 위한 메인 윈도우와 요소를 생성하고, 메인 함수를 실행하는 방법을 배우게 됩니다.

👀 미리보기

QR Code generator interface preview

🎯 작업

이 프로젝트에서 다음을 배우게 됩니다:

  • Python 을 사용하여 QR 코드 생성기를 만드는 방법
  • qrcode, tkinter, PIL과 같은 라이브러리를 가져오는 방법
  • QR 코드 생성 및 저장을 위한 함수를 정의하는 방법
  • QR 코드 생성 및 저장을 위한 사용자 인터페이스를 만드는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • qrcode 라이브러리를 사용하여 QR 코드를 생성할 수 있습니다.
  • tkinter 라이브러리를 사용하여 그래픽 사용자 인터페이스 (GUI) 를 만들 수 있습니다.
  • 생성된 QR 코드를 파일로 저장할 수 있습니다.
  • 생성된 QR 코드를 캔버스에 표시할 수 있습니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 69%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

프로젝트 파일 생성

시작하려면 qr_code_generator.py라는 새 파일을 생성하고 선호하는 코드 편집기에서 엽니다.

cd ~/project
touch qr_code_generator.py
✨ 솔루션 확인 및 연습

필수 라이브러리 가져오기

qr_code_generator.py 파일에서 코드 시작 부분에 다음 라이브러리를 가져옵니다:

import qrcode
import tkinter as tk
from tkinter import messagebox, filedialog
from PIL import ImageTk, Image
import os

다음 명령을 사용하여 필요한 라이브러리를 설치합니다:

pip3 install qrcode pillow
✨ 솔루션 확인 및 연습

QR 코드 생성 함수 정의

generate_qr이라는 함수를 정의하기 위해 다음 코드를 추가합니다. 이 함수는 텍스트 매개변수를 받아 QR 코드 이미지를 생성합니다:

def generate_qr(text):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4,
    )
    qr.add_data(text)
    qr.make(fit=True)

    img = qr.make_image(fill='black', back_color='white')
    filename = 'qr_code.png'
    img.save(filename)
    return filename

위에서 qrcode 라이브러리를 사용하여 QR 코드 이미지를 생성합니다. generate_qr 함수는 QR 코드가 포함할 텍스트 또는 URL 인 텍스트 매개변수를 받습니다. 그런 다음 함수는 지정된 버전, 오류 수정 수준, 상자 크기 및 테두리를 사용하여 QR 코드 객체를 생성합니다. 텍스트는 QR 코드 객체에 추가되고 QR 코드 이미지가 생성되어 qr_code.png라는 파일에 저장됩니다. 마지막으로 함수는 생성된 QR 코드 이미지의 파일 이름을 반환합니다.

✨ 솔루션 확인 및 연습

QR 코드 저장 함수 정의

다음으로, 생성된 QR 코드를 사용자가 저장할 수 있도록 save_qr이라는 함수를 정의하기 위해 다음 코드를 추가합니다:

def save_qr(filename):
    filepath = filedialog.asksaveasfilename(defaultextension='.png', filetypes=[('PNG Images', '*.png')])

    if filepath:
        os.rename(filename, filepath)
        messagebox.showinfo('QR Code Saved!')

이 함수는 생성된 QR 코드 이미지의 파일 이름인 filename 매개변수를 받습니다. 그런 다음 함수는 파일 대화 상자 (file dialog box) 를 열어 사용자가 QR 코드 이미지를 저장할 위치와 파일 이름을 선택할 수 있도록 합니다. 사용자가 위치와 파일 이름을 선택하면 함수는 생성된 QR 코드 이미지의 이름을 선택한 파일 이름으로 바꾸고 QR 코드가 저장되었음을 사용자에게 알리는 메시지 상자를 표시합니다.

✨ 솔루션 확인 및 연습

메인 윈도우 및 요소 생성

이제 QR 코드 생성기 인터페이스에 필요한 메인 윈도우, 레이블, 입력 필드, 캔버스 및 버튼을 생성하는 create_window라는 함수를 정의하기 위해 다음 코드를 추가합니다:

def create_window():
    window = tk.Tk()
    window.title('QR Code Generator')

    label = tk.Label(window, text='Enter the text/URL:')
    label.pack()

    ent = tk.Entry(window)
    ent.pack()

    canvas = tk.Canvas(window, width=200, height=200)
    canvas.pack()

    def generate_and_display():
        text = ent.get()
        filename = generate_qr(text)
        photo = ImageTk.PhotoImage(Image.open(filename))
        canvas.create_image(100, 100, image=photo)
        button2 = tk.Button(window, text='Save QR Code', command=lambda: save_qr(filename))
        button2.pack()
        window.mainloop()

    button = tk.Button(window, text='Generate QR Code', command=generate_and_display)
    button.pack()

    window.mainloop()

tkinter 라이브러리를 사용하여 메인 윈도우, 레이블, 입력 필드, 캔버스 및 버튼을 생성합니다. create_window 함수는 메인 윈도우를 생성하고 사용자가 QR 코드가 포함할 텍스트 또는 URL 을 입력할 수 있도록 레이블과 입력 필드를 추가합니다. 또한 함수는 생성된 QR 코드 이미지를 표시하는 데 사용될 캔버스도 생성합니다. 그런 다음 함수는 generate_and_display라는 중첩 함수를 정의합니다. 이 함수는 입력 필드에서 텍스트를 가져와 QR 코드 이미지를 생성하고 캔버스에 QR 코드 이미지를 표시합니다. 또한 함수는 사용자가 생성된 QR 코드 이미지를 저장할 수 있는 버튼을 생성합니다. 마지막으로 함수는 클릭 시 generate_and_display 함수를 호출하는 버튼을 생성합니다.

✨ 솔루션 확인 및 연습

메인 함수 실행

마지막으로, 파일이 실행될 때 create_window 함수를 실행하기 위해 다음 코드를 추가합니다:

if __name__ == '__main__':
    create_window()
    generate_qr('Hello World!')

if __name__ == '__main__' 블록은 파일이 모듈로 가져올 때가 아닌, 실행될 때만 create_window 함수가 실행되도록 보장합니다. 이 블록은 또한 "Hello World!" 텍스트로 QR 코드 이미지를 생성하기 위해 generate_qr 함수를 호출합니다.

python qr_code_generator.py
QR code generation output
✨ 솔루션 확인 및 연습

요약

Python 을 사용하여 QR 코드 생성기를 성공적으로 만들었습니다. 이 단계별 프로젝트를 따라, 프로젝트 파일을 생성하고, 필요한 라이브러리를 가져오고, QR 코드 생성 및 저장을 위한 함수를 정의하고, Tkinter 로 사용자 인터페이스를 만들고, QR 코드를 생성하고 표시하기 위해 프로젝트를 실행하는 방법을 배웠습니다.