raspberrypi python でQRcode 出力、表示 

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()
カテゴリー iot