見出し画像

【Python】 シンプルなQRコード作成アプリを作ってみた。

こんばんは。今日はpythonで簡易的なGUIアプリケーションを作成してみましたので、共有していきます。構成はぐちゃぐちゃで正直中身は見れたものではありませんが、何とかそれっぽい動きをするものにできました。

作成したスクリプト全体像

import tkinter
import pyqrcode
import png
from tkinter import messagebox
from PIL import Image, ImageTk

   
#ボタン1
def btn_click():
   #入力されたURLを取得
   geturl = txt.get()
   
   #QRコード作成(URLと画像タイトルを渡す)
   make(geturl,output)

   #画像の作成の完了をGUIで知らせる
   res = messagebox.showinfo("メッセージ", "QRコード作成完了")

   #入力用GUIを閉じる
   root.destroy()

   #QRコード画像表示用GUI
   root2 = tkinter.Tk()
   root2.geometry("600x500")
   root2.title("作成したQRコード")

   #カレントフォルダにある作成した画像を開く
   img=Image.open("qrcode.png")
   img=ImageTk.PhotoImage(img)

   #画像を貼り付けるキャンバスの作成し、QR画像を貼り付ける
   canvas=tkinter.Canvas(bg="black",width=550,height=425)
   canvas.place(x=25,y=50)
   canvas.create_image(150,80,image=img,anchor=tkinter.NW)

   #URLをメインウィンドウ上部に表示
   label2=tkinter.Label(root2,text=geturl,wraplength=450)
   label2.place(x=60,y=5)
   
   root2.mainloop()

#ボタン2    
def btn2_click():
   txt.delete(1,tkinter.END)


#QRコードを作成する関数
def make(url,output):

   a = pyqrcode.QRCode(content=url,error='H')
   #カレントフォルダに自動保存
   a.png(file=output,scale=6)


#作成するQRコード画像名
output="qrcode.png"

#作成するQRコードのURLを入力するGUI
root=tkinter.Tk()

#メインウィンドウ
root.geometry("300x200")
root.title("QRコード作成くん")

#テキスト
txt=tkinter.Entry(width=40)
txt.place(x=30,y=70)
#URLの初期値
txt.insert(tkinter.END,"https://note.com/pika_py")


#ラベル
label=tkinter.Label(root,text="URLを入力してください")
label.place(x=90,y=40)

#ボタン1 URL取得→画像作成→画像をウィンドウ表示
btn=tkinter.Button(root,text="送信",width=30,command = btn_click)
btn.place(x=40,y=130)

#ボタン2 URL初期値を削除
btn2=tkinter.Button(root,text="クリア",width=30,command = btn2_click)
btn2.place(x=40,y=170)

#画面を維持
root.mainloop()

実行イメージ

Pythonファイルを開くとURL入力用のウィンドウがポップアップ
テキストボックスには初期値を入れてあり、クリアで削除が可能

画像1

URLを入力し送信をクリックするとメッセージボックスがポップアップ
カレントフォルダには「"qrcode.png"」が生成

画像2

メッセージボックスを閉じると作成したQRコード画像の乗ったウィンドウがポップアップ。作成元のURLも上部に表示。URLが長い場合、折り返し表示されるものの、長すぎるとキャンバスに掛かるのが欠点・・・

画像3

最後に・・・

Pyinstallerを用いてexeファイルを作成したところ容量は、15MBほどと機能のわりに巨大に・・・。一応何でも形にだけはしておきたい気持ちが勝り、作成はしましたが、おそらくexeファイルとして使うことはありません笑

いつか、CSVを読み込み、ピボットテーブルをその場でいじるGUIアプリケーションを作ってみたいと思いますが、実際に可能なのかは分かりません。当面はこれをチャレンジしてみようかなぁ。

この記事が気に入ったらサポートをしてみませんか?