
pythonでqrcodeライブラリを使って簡単にqrcodeを作成できる
pythonのQRコードライブラリについては下記に説明とサンプルコードがある
https://github.com/lincolnloop/python-qrcode
ライブラリが見当たらない場合は
sudo pip3 install qrcode
サンプルコードは
import qrcode qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) qr.add_data('Some data') qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white")
メーキングの部分を関数に書き換えて
import qrcode
#version サイズ1-40
def makeQR(rev_dat):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=3,
border=8)
qr.add_data(rev_dat)
qr.make(fit=True)
return qr.make_image()
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_M)
data = '2020040112345678'
img=makeQR(data)
img.save('output.png')
画像出力と同時に画面に表示 (出力後のいそのファイルを読むこむ方法
#coding:utf-8
import qrcode
import tkinter as tk
from PIL import ImageTk, Image
def makeQR(rev_dat):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=3,
border=8)
qr.add_data(rev_dat)
qr.make(fit=True)
return qr.make_image()
data = '2020040112345678'
img=makeQR(data)
img.save('output.png')
# QRコード画像の出力
#i
#メイン
root = tk.Tk()
root.title("tkinter Title")
root.geometry("400x400")
gazou= Image.open('output.png')
width,height=200,200
gazou= img.resize((width,height))
gazou= ImageTk.PhotoImage(gazou)
canvas = tk.Canvas(bg="white", width=800 ,height=800)
canvas.place(x=0, y=0)
canvas.create_image(0, 0, image=gazou ,anchor=tk.NW)
root.mainloop()
画面の表示だけでよこれば
ただしImageTkをつかうので
sudo apt-get install python3-pill
sudo apt-get install python3-pill.imagetk
#coding:utf-8
import qrcode
import tkinter as tk
import PIL.ImageTk
def makeQR(rev_dat):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=3,
border=8)
qr.add_data(rev_dat)
qr.make(fit=True)
return qr.make_image()
# QRコード画像の出力
#i
#メイン
root = tk.Tk()
root.title("tkinter Title")
w=800
h=500
canvas = tk.Canvas(root,width=w,height=h,bg='white')
data = '2020040112345678'
img=makeQR(data)
imgtk = PIL.ImageTk.PhotoImage(img)
#canvas = tk.Canvas(root,width=imgtk.width(),height=imgtk.height(),bg='white')
#canvas.create_image(0,0,image = imgtk,anchor = tk.NW)
f = ('FixedSys, 12')
canvas.create_image(w/2,h/2,image = imgtk,anchor = tk.CENTER)
canvas.create_text(w/2,50,text = data,font=f)
#canvas.create_text(w/2,450,text = "Footer",font=f)
canvas.pack()
root.mainloop()

画像をジャストサイズなら
下記のように書き換えて
imgtk = PIL.ImageTk.PhotoImage(img)
canvas = tk.Canvas(root,width=imgtk.width(),height=imgtk.height(),bg='white')
canvas.create_image(0,0,image = imgtk,anchor = tk.NW)
canvas.pack()
