仕事をしていて、製品の情報をQRコード化しなくてはいけなくなりました。
AccessとExcelの合わせ技でQRコードを作ることができるのですが、日本語をQRコードに埋め込むことができません。
なのでPythonで情報を入れるとそれに適したQRコードが作られるコードをつくりました。
〇やりたいこと
製品コードと製造日を入力すると、それに適した情報をQRコード化し、画像を保存、プリントアウトして現場に配布という作業を行いたいです。
〇作ったコード
コピーする場合はインデックスの位置に注意してください。
〇コードの解説
上記のコードを動かすと・・・
こんなユーザーフォームが表示されます。
このユーザーフォームのテキストボックスに情報を入力して、取得ボタンを押すと・・・
こんな感じでQRコードが表示されてデスクトップに画像ファイルとして保存されます。
スマホで読み取ると“製品情報”という中身が表示されます。
以下がコードの詳細な解説です。
//今回使用するライブラリ、モジュールをインポートしています。
import qrcode
import tkinter
//tkインターで作るユーザーフォームの関数です。
//関数名です
def bclick():
//テキストボックスの値を変数に代入
a
= str(txt.get())
b
= str(txt2.get())
//ユーザーフォームを閉じる
rt.destroy()
//製品コードの識別です。
//elif部を増やせば多くの情報に対応します。
if a=="製品コード1":
a="QRコードの中身1"+b
//日本語のQRコードを読み込めるようにエンコードでシフトJISに変換しています。
c=a.encode("shift_jis")
elif a=="製品コード2":
a=" QRコードの中身2"+b
c=a.encode("shift_jis")
//品種コードになかった場合の処置です。
else:
print("情報を間違えていませんか?")
//QRコードを作成して
img = qrcode.make(c)
//イメージを保存
img.save("製品QRコード.png")
//QRコードを表示
img.show()
//上記までが関数部です。以下がユーザーフォームの作成コードです。
//ユーザーフォームモジュールのTkinterを定義しています。
rt = tkinter.Tk()
//ユーザーフォームのサイズ。
rt.geometry("500x300")
//ユーザーフォームのタイトル。
rt.title("情報取得")
//ユーザーフォームのに配置するテキストボックスのラベルです。
lbl = tkinter.Label(text="製品コード")
//ラベルを配置する位置です。
lbl.place(x=30, y=70)
//ユーザーフォームのに配置するテキストボックスのラベルです。
lbl2 = tkinter.Label(text="製造日")
//ラベルを配置する位置です。
lbl2.place(x=30, y=150)
//ユーザーフォームのに配置するテキストボックスです。幅を40としています。
txt = tkinter.Entry(width=40)
//ユーザーフォームのに配置するテキストボックスの位置です。
txt.place(x=130, y=70)
//ユーザーフォームのに配置するテキストボックスです。幅を40としています。
txt2 = tkinter.Entry(width=40)
//テキストボックスの初期値を設定しています。
txt2.insert(0,"テンプレートにした情報")
//ユーザーフォームのに配置するテキストボックスの位置です。
txt2.place(x=130, y=150)
//ユーザーフォームのに配置する読み込みボタンです。
//上記の関数名で機能をセットしています。
btn = tkinter.Button(rt, text="取得", command= bclick)
//ボタンの配置場所です。
btn.place(x=335, y=200)
//ユーザーフォームの表示です。
rt.mainloop()
〇補足
即興で作ったので、見た目はあまりきれいじゃないです。
今回は行っていませんが、ユーザーフォームの色や線などの設定もできます。
QRコードも大きさを指定できたり、色を付けたりといろいろとできます。
〇まとめ
PythonでQRコードを作りたい場合は、qrcodeのライブラリを使います。
qrcodeのライブラリはpip でインストールすることができます。
ユーザーフォームを使いたかったら tkinterのモジュールを使います。TkinterはPythonをインストールすると最初から使えます。
これを、openpyxlを使ってExcelに貼り付けれたらもっと便利になるので、今度挑戦してみたいです。
0 件のコメント:
コメントを投稿