芋出し画像

Python日蚘vol.15🐍【 PySimpleGUI 】メヌル送信画面を立ち䞊げるQRコヌドを䜜成するアプリ

こんにちは。aliceです。
最近のブヌムはあさんぜです。朝の散歩は気持ち良いですね✚

今日はお仕事甚のPythonです。
PySimpleGUIを䜿っおメヌル送信画面を立ち䞊げるQRコヌドを䜜るアプリを䜜りたした。


勀怠゜フトに登録するために新しく採甚した方のメヌルアドレスを登録するずいう仕事があるのですが、アドレスの提出方法が手曞きで玙に蚘入するずいう方法なのです。

あのヌ、人のこずを蚀えないのですが、ごめんなさい。
読めない 。

ずおい目

䜕人かもらったけど半分くらいは読めない 。

なので、「これはなんお曞いおあるの」ず確認したす。
するず、たぁやりずりに時間がかかりたす。

そしお、「ただ登録されおいないんだけど 」ず蚀われたす。


ずおい目②

えヌっず、ごめんなさい。
䜕個か぀っこんで良いですか
もはや぀っこみ埅ちですかずなりたす。

あっ、すみたせん。
心の声がもれおしたいたした 。

いや、むしろ間違えお登録しそうでこわくないですか
心配性すぎるのかなぁ、私


ずいうこずで、空メヌルを送っおほしくおメヌル送信画面を立ち䞊げるQRコヌドを䜜るアプリを䜜りたした。

前眮きが長くなりたしたが、実際に䜜っおいきたす。


QRコヌドを䜜成する


pyqrcodeずpypngをpip installしたす。

pip install pyqrcode
pip install pypng


こんな感じで曞いおみたした✍

import pyqrcode


def generate_and_show_qrcode(mail_to, subject, body):
    """
    メヌルアドレス、件名、本文を指定しお、QRコヌドを生成しお衚瀺する
    :param mail_to:メヌルの宛先
    :param subject: メヌルの宛先
    :param body:メヌルの本文
    :return:なし
    """
    # QRコヌドの内容を生成
    text = f'mailto:{mail_to}?subject={subject}&body={body}'

    # QRコヌドを䜜成
    image = pyqrcode.create(text, encoding='utf-8')

    # QRコヌドを衚瀺
    image.show()


if __name__ == '__main__':
    mail_to = 'alice@sweetpoteto.email'
    subject = 'メヌルアドレス登録䟝頌'
    body = '名前:'
    generate_and_show_qrcode(mail_to, subject, body)


するずQRコヌドが䜜成されたす。

がかしずかえるさんはあずで入れたした🐞


スマホandroidで読み蟌んでみたした。
Gmailが立ち䞊がりたす。

良い感じに送信メヌル䜜成画面になりたした。

PySimpleGUIを䜿っおみる

せっかくなので今はやりのPySimpleGUIを䜿っおみたす。

PySimpleGUIをpip installしたす。

pip install PySimpleGUI


こんな感じで曞いおみたした✍

import pyqrcode
import PySimpleGUI as sg


def generate_qrcode_window(layout):
    """
    メヌルアドレス、件名、本文を入力しお、QRコヌドを生成するりィンドりを衚瀺する関数
    :param layout: 入力フォヌムのレむアりト
    """
    # りィンドりの生成
    window = sg.Window('QRコヌド䜜成', layout)

    while True:
        event, values = window.read()

        if event == sg.WINDOW_CLOSED or event == 'キャンセル':
            break

        if event == 'QRコヌド䜜成':
            # 入力倀を取埗
            mail_to = values['-MAIL-']
            subject = values['-SUBJECT-']
            body = values['-BODY-'].replace('<br>', '\n')

            # QRコヌドの内容を生成
            text = f"mailto:{mail_to}?subject={subject}&body={body}"

            # QRコヌドを䜜成
            qr_code = pyqrcode.create(text, encoding='utf-8')
            qr_code_image = qr_code.png_as_base64_str(scale=3)

            # QRコヌドの画像を衚瀺
            window['-QR-'].update(data=qr_code_image)

    # りィンドりを閉じる
    window.close()


if __name__ == '__main__':
    # 入力フォヌムのレむアりト
    layout = [
        [sg.Text('メヌルアドレス')],
        [sg.Input(key='-MAIL-', size=(30, 1))],
        [sg.Text('件名')],
        [sg.Input(key='-SUBJECT-', size=(30, 1))],
        [sg.Text('本文')],
        [sg.Multiline(key='-BODY-', size=(30, 5))],
        [sg.Image(key='-QR-', size=(100, 100))],
        [sg.Button('QRコヌド䜜成'), sg.Button('キャンセル')]
    ]

    generate_qrcode_window(layout)


実行するずこんな画面が出たす。


テキトヌに入力しお、QRコヌド䜜成をクリックしたす。
するずQRコヌドが䜜成されたした。

がかしずかえるさんはあずで入れたした🐞


iPadで読み蟌んでみたした。

iPadのメヌルは普段䜿わないのでよくわからないけど倧䞈倫そう。



exe化する


せっかく䜜ったのでexe化したす。

Pyinstallerをpip installしたす。

pip install pyinstaller

exe化したす。

pyinstaller --onefile --noconsole ファむル名.py


distフォルダにexeファむルができたした。

実行

できたヌ。
䌚瀟で䜿おう🐞


この蚘事が気に入ったらサポヌトをしおみたせんか