【Python】QRコード、バーコード作成GUIアプリ

Python

ad2

【Python】QRコード、バーコード作成GUIアプリ

pythonでQRCode、BarCodeを作成するGUIアプリ作成

完成形は下図のようになります。タブでQRとBarCodeを切り替えできるようにしました。ボタン押下で簡単に作成できるので、業務でちょっとしたQRCode、BarCodeが欲しいとき、重宝します。オフラインPCで尚且つ、Excelも無い場合に役に立ちますね。

pyqrcode1 pybarcode1

 

ソースコード紹介

今回のGUIは、pysimpleguiを使用しました。シンプルなGUIアプリを簡単に作成できます。

import barcode
import qrcode
import PySimpleGUI as sg
from PIL import ImageTk
from barcode.writer import ImageWriter


# QRcode作成 引数:code QRCode内容
def qrmaker(code):
    # QR作成設定オプション
    qr = qrcode.QRCode(
        version=3,
        error_correction=qrcode.constants.ERROR_CORRECT_M,
        box_size=3,
        border=7,
    )
    qr.add_data(str(code))  # QR内容
    qr.make(fit=True)  # 作成
    qr_img = qr.make_image(fill_color="black", back_color="white")  # 画像変換 白背景色に黒色印字
    qr_img_res = ImageTk.PhotoImage(qr_img)  # 画像変換
    # *画像保存したい場合は、↓のコードをコメントアウト解除する
    # qr_img.save('QRcode.png')  # 保存

    return qr_img_res


# barcode作成
def barcode_create(bar_code):
    # BarCode種類指定
    bar = barcode.get_barcode_class('code39')  # 'code39'  'ean13'
    # BarCode作成 **add_checksum=Falseにしないと、文字列の末尾にチェックSUMの文字が入ってしまう。
    bar_create = bar(code=bar_code, writer=ImageWriter(), add_checksum=False)
    # barコードオプション
    options = dict(module_width=0.2, module_height=4, font_size=5, quiet_zone=3, text_distance=2)
    image = bar_create.render(options)  # 作成
    bar_photo = ImageTk.PhotoImage(image)  # 画像変換
    # *画像保存したい場合は、↓のコードをコメントアウト解除する
    # bar_create.save('barcode')  # 保存
    return bar_photo


def main():
    sg.theme('Black')  # GUI Theme Color

    t1 = sg.Tab('BarCode',
                [[sg.In(size=(20, 4), key='-BARCODE_TEXT-', font=('Meiryo UI', 16))],
                 [sg.B('CODE作成', key='-BAR_CREATE-', size=(10, 3))],
                 [sg.Image(size=(50, 50), key='-IMAGE_BAR-', enable_events=True)],
                 ], key='tab1')
    t2 = sg.Tab('QRCode',
                [[sg.Multiline(size=(20, 4), key='-QRCODE_TEXT-', font=('Meiryo UI', 16))],
                 [sg.B('CODE作成', key='-QR_CREATE-', size=(10, 3))],
                 [sg.Image(key='-IMAGE_QR-', enable_events=True)],
                 ], key='tab2')
    # define the window layout
    layout = [[sg.Button('Exit', size=(4, 1), font='Helvetica 7')],
              [sg.TabGroup([[t1, t2]], key='tab_group', font=('Meiryo UI', 22), enable_events=True)],
              ]
    # GUI Window
    window = sg.Window(title='QR・BarCode Create', layout=layout, resizable=True, margins=(0, 0))

    while True:
        # event, values = window.read(timeout=1000, timeout_key='-timeout-')
        event, values = window.read()
        if event in (None, 'Exit'):
            break

        # *各登録ボタン押下時
        # BarCode Tab Create button
        if event == '-BAR_CREATE-':
            bar_code_no = barcode_create(values['-BARCODE_TEXT-'])  # TextBoxの内容をBarCodeに変換
            window['-IMAGE_BAR-'].update(data=bar_code_no)

        # QRCode Tab Create button
        if event == '-QR_CREATE-':
            lens_info1 = qrmaker(values['-QRCODE_TEXT-'])
            window['-IMAGE_QR-'].update(data=lens_info1)

    window.close()


if __name__ == '__main__':
    main()ら

ライブラリ

pip install barcode qrcode PySimpleGUI Pillow

 

画像保存した場合

作成したコードを保存する場合、コメントアウトしている一行を解除してあげれば、画像保存されるようになります。

保存先は、カレントディレクトリに保存されるようになっているので、適宜保存先パスは変更して下さい。

qrcode_bar_code_save

exeファイル化

pyinstallerを使用してpyファイルをexeファイル化しておけば、python環境が無い人に簡単に配布できるので、便利です。

pyinstallerの詳細は省きます。

pyinstaller –onefile –noconsole <pythonファイル名>

distフォルダにexeファイルが作成される。ファイルの容量が大きくなるがしょうがない。