【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ファイルが作成される。ファイルの容量が大きくなるがしょうがない。