【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入力用のウィンドウがポップアップ
テキストボックスには初期値を入れてあり、クリアで削除が可能
URLを入力し送信をクリックするとメッセージボックスがポップアップ
カレントフォルダには「"qrcode.png"」が生成
メッセージボックスを閉じると作成したQRコード画像の乗ったウィンドウがポップアップ。作成元のURLも上部に表示。URLが長い場合、折り返し表示されるものの、長すぎるとキャンバスに掛かるのが欠点・・・
最後に・・・
Pyinstallerを用いてexeファイルを作成したところ容量は、15MBほどと機能のわりに巨大に・・・。一応何でも形にだけはしておきたい気持ちが勝り、作成はしましたが、おそらくexeファイルとして使うことはありません笑
いつか、CSVを読み込み、ピボットテーブルをその場でいじるGUIアプリケーションを作ってみたいと思いますが、実際に可能なのかは分かりません。当面はこれをチャレンジしてみようかなぁ。
この記事が気に入ったらサポートをしてみませんか?