Pythonista で QRコードを作ってuiに表示する


はじめに

買ったまま1年ぐらい(もっとかも)使ってなかった Pythonista 3。もったいないので公式ドキュメントをみながらあれこれ試してる。Qiitaはいつも見てるばかりなので、書いてみることにした。

やること - QRコードを作る

iOSアプリとして使いたいのでuiViewを使う。テキストフィールドに変換したい文字列をいれて、ボタンを押すとQRコードを作る。

完成イメージ

QRコードの作り方

qrcodeというライブラリを使うと簡単にQRコードがつくれる。それをconsoleに出すのは、こうやればいいので簡単。

sample.py
import qrcode

img = qrcode.make('http://flapro.net/') #ここにQRコードにしたい文字列を入れる
show.image()

ui.ImageViewに表示するには、PILからImageに変換する必要がある。
Pythonista公式サイトのフォーラムにやりかたが載っていたので使わせてもらった。

pil2ui.py
# pil <=> ui
def pil2ui(imgIn):
    with io.BytesIO() as bIO:
        imgIn.save(bIO, 'PNG')
        imgOut = ui.Image.from_data(bIO.getvalue())
    del bIO
    return imgOut

完成したソース

qr.py

import ui
import io
from PIL import Image 
import qrcode

def getQR(sender):
    img = pil2ui(qrcode.make(sender.superview['textfield'].text))
    sender.superview['imageView'].image = img

# pil <=> ui
def pil2ui(imgIn):
    with io.BytesIO() as bIO:
        imgIn.save(bIO, 'PNG')
        imgOut = ui.Image.from_data(bIO.getvalue())
    del bIO
    return imgOut

v = ui.load_view()
v.present('sheet')

参考