본문 바로가기
코딩 연습/코딩배우기

파이썬 qrcode, tkinter 모듈로 만든 QR코드 생성기

by good4me 2021. 11. 21.

goodthings4me.tistory.com

■ 파이썬으로 만든 간단한 PC용 QR코드 생성 프로그램

파이썬에서도 QR코드 생성 모듈을 여러 개 지원하고 있다는 것을 알았다.

 

파이썬 qrcode 모듈과 tkinter를 활용하여 웹사이트, 블로그, 유튜브 영상 등의 URL과 문구 등을 입력하여 QR코드를 간단하게 만들 수 있는 프로그램을 만들어 보았다.

 

그 모습은,

파이썬으로 만든 qr코드 생성기

 

good4me.co.kr

 

 

※ 쓸데있는 QR코드 생성기 프로그램 다운로드 : 여기(클릭)

 

 

▶ 프로그램 소스

from tkinter import *
import tkinter.messagebox as msgbox
import qrcode
import webbrowser


root = Tk()
root.title('쓸데있는 QR코드 생성기')
root.geometry('450x465+700+100')
root.resizable(False, False)


# 시작 버튼
def start():
    # QR코드 생성할 내용 비었는지 확인
    if len(content_frame.get('1.0', 'end')) <= 1:
        msgbox.showwarning('Info', 'QR코드 생성할 내용을 입력하세요!')
        return

    # 파일명 비었는지 확인
    if not len(txt_entry_filename.get()):
        msgbox.showwarning('Info', '저장할 파일명을 입력하세요!')
        return
    qr_contents = content_frame.get('1.0', 'end-1c')
    file_name = txt_entry_filename.get()

    if qr_contents and file_name:
        state_var.set('실행중.....')
        root.update_idletasks()

        ## qr코드 만느는 객체 생성
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_L,
            box_size=10,
            border=1
        )
        qr.add_data(qr_contents)
        qr.make(fit=True)

        img = qr.make_image(fill_color='black', back_color='white')
        img.save(file_name + '.jpg')

        state_var.set('QR코드 생성 완료..!!')
    else:
        msgbox.showerror('오류', '프로그램 오류가 발생했습니다.!')
        return


def func_quit():
    root.destroy()


def read_me():
    msgbox.showinfo('QR코드 생성 내용 입력 시 참고!', 'https://smartstore.naver.com/borame365 같은 블로그 URL\n'
    '또는 https://youtu.be/uthkh1_OVTo 유튜브 URL 등을 입력 시,'
    '"http(s)://" 또는 URL 내에 오탈자가 없도록 주의하세요.\n\n' 
    '홍보 문구, 친구나 연인에게 보내는 메시지 등을\n'
    '텍스트로 입력하면 QR코드로 생성할 수 있습니다.\n')


def callback(url):
    webbrowser.open_new(url)  # # webbrowser.open_new(r"file://c:\test\test.csv")


# 사용법 표시 들어갈 공간
lbl_use_frame = Frame(root)
lbl_use_frame.pack(fill='x', padx=2, pady=2)

txt_url = '*프로그램 사용법 보기>>'
lbl_url_txt = Label(lbl_use_frame, text=txt_url, font=('Helveticabold', 8), justify='left', fg='blue', cursor='hand2')
lbl_url_txt.pack(side='right', fill='x', padx=5, pady=5, ipadx=5)
lbl_url_txt.bind('<Button-1>', lambda e: callback('https://blog.naver.com/borame365/222574050741'))


# QR코드 내용 입력 LabelFrame
qr_frame = LabelFrame(root, text="생성할 QR코드 내용 입력")
qr_frame.pack(fill="x", padx=5, pady=5, ipady=5)

# qr내용 입력 예시 레이블 - 예시 보이기
lbl_ex_frame = Frame(qr_frame)
lbl_ex_frame.pack(fill='x', padx=5, pady=1)

lbl_ex_url1 = Label(lbl_ex_frame, text='* URL 또는 텍스트 내용 입력')
lbl_ex_url1.pack(side='left')

# URL 입력 레이블 - 오른쪽(Read Me)
btn_url = Button(lbl_ex_frame, text='Read Me', width=8, command=read_me)
btn_url.pack(side='right', padx=5, pady=1)

# qr내용 입력 텍스트 프레임 - 엔터 가능
content_frame = Text(qr_frame, height=8)  # width=, height=
content_frame.pack(fill='both', padx=5, pady=5)

# 저장할 파일명 입력 설명 LabelFrame
filename_frame = LabelFrame(root, text="")
filename_frame.pack(fill="x", padx=5, pady=5, ipady=5)

# 파일명 입력 레이블
lbl_url = Label(filename_frame, text='저장할 QR코드 파일명 :', width=18)
lbl_url.pack(side='left', padx=5, pady=5)

# 엔터 불가한 한 줄짜리 파일명 입력 엔트리
txt_entry_filename = Entry(filename_frame)
txt_entry_filename.insert(0, '')
txt_entry_filename.pack(side='left', fill='x', expand=True, padx=5, pady=5)

# 입력 레이블 - 예시 보이기
lbl_ex_frame = Frame(root)
lbl_ex_frame.pack(fill='x', padx=5, pady=0)

lbl_ex_filename = Label(lbl_ex_frame, text='* 파일명 예시) 내블로그_borame365')
lbl_ex_filename.pack(side='left')

# 프로그램 실행 표시 들어갈 공간
lbl_execute_frame = Frame(root)
lbl_execute_frame.pack(fill='x', padx=5, pady=2)

state_var = StringVar()
state_var.set(' ')
lbl_state_txt = Label(lbl_execute_frame, textvariable=state_var)
lbl_state_txt.configure(font=('Arial', 10, 'bold', 'italic'))
lbl_state_txt.pack(side='right', fill='x', padx=5, pady=2)

# 실행 프레임 - 생성, 닫기
frame_run = Frame(root)
frame_run.pack(fill='x', padx=5, pady=5)

btn_close = Button(frame_run, padx=5, pady=5, text='닫기', width=6, command=func_quit)
btn_close.pack(side='right', padx=5, pady=5)

btn_start = Button(frame_run, padx=5, pady=5, text='QR코드 생성', width=12, command=start)
btn_start.pack(side='right', padx=5, pady=5)

root.mainloop()

 

 

 

※ 생성된 QR코드

스마트폰 카메라로 인식시키면 내용을 볼 수 있음

 

QR코드(큐알코드) 생성 사이트
 

참도움 - 아파트 관련 정보 제공

아파트 정보, 아파트 실거래가, 아파트 샷시 교체 비용 등 생활정보

truedoum.com

 

댓글