LoginSignup
7

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-05-29

はじめに

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

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

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

完成イメージ

IMG_8F7BE818D2D7-1.jpeg

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')

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7