【Python】QRコード、バーコード作成GUIアプリ
pythonでQRCode、BarCodeを作成するGUIアプリ作成
完成形は下図のようになります。タブでQRとBarCodeを切り替えできるようにしました。ボタン押下で簡単に作成できるので、業務でちょっとしたQRCode、BarCodeが欲しいとき、重宝します。オフラインPCで尚且つ、Excelも無い場合に役に立ちますね。
ソースコード紹介
今回の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
画像保存した場合
作成したコードを保存する場合、コメントアウトしている一行を解除してあげれば、画像保存されるようになります。
保存先は、カレントディレクトリに保存されるようになっているので、適宜保存先パスは変更して下さい。
exeファイル化
pyinstallerを使用してpyファイルをexeファイル化しておけば、python環境が無い人に簡単に配布できるので、便利です。
pyinstallerの詳細は省きます。
pyinstaller –onefile –noconsole <pythonファイル名>
distフォルダにexeファイルが作成される。ファイルの容量が大きくなるがしょうがない。