2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TkinterでQRコードメーカーを作ってみた!

Posted at

プログラミングの勉強の為に、とにかく何か成果物を作りたい!と思い、pythonのTkinterでQRコードメーカーを作ってみました。

qrcode.py
import tkinter
from PIL import Image,ImageTk
import qrcode
 
url = ''
img = imgtk = None
 
def click_btn():
    global url,img
    url = entry.get()
    img = qrcode.make(url)
    draw_code()
 
def draw_code():
    global imgtk #PhotoImage()はグローバル変数に入れないとすぐ消滅し、画像が表示されない
    canvas.delete('QRCODE')
    imgtk = ImageTk.PhotoImage(img) 
    canvas.create_image(
        300,
        300,
        image=imgtk,
        tag='QRCODE'
        )
 

root = tkinter.Tk()
canvas = tkinter.Canvas(width=600,height=500,bg='white')
canvas.pack()
root.title('QRcode maker')
entry = tkinter.Entry(width=60)
entry.place(x=20,y=70)
label = tkinter.Label(root,text='QRコード化したいURLを入力',font=('System',24))
label.place(x=20,y=20)
button = tkinter.Button(root,text='QRコード作成!',font=('Times New Roman',24),command=cli    ck_btn)
button.place(x=20,y=100)
root.mainloop()

image.png

↓実行

image.png

###◎詰まったこと
・エラーメッセージが出ないのに、QRコードがcreate_imageで表示されなかった。
・qrcodeモジュールのimg.saveで保存すると、qrコードは生成されており、保存出来た。
→QRコードが一瞬だけ表示されて、すぐ消えたのかと思い、root.after()とか使ってみたけど、効果なし。

色々調べた結果、グローバル関数でPhotoImageオブジェクトを保管しないと、オブジェクト?がすぐ消えてしまうようです。
参考url→http://lrcgf.hatenablog.com/entry/2013/06/30/222918

QRコードのイメージを作成したものの、create_imageにきちんとデータを渡せていなかったようです。
勉強になりました。

2
1
0

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?