
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ãã¡ã€ã«ãã§ããŸããã

å®è¡

ã§ãããŒã
äŒç€Ÿã§äœ¿ããðž
