å æ¥ãæè»œã«äœ¿ããGUIã©ã€ãã©ãªãPySimpeGUIãã®ããŒãžã§ã³5ããªãªãŒã¹ãããããã«äŒŽã£ãŠåçšå©çšãæååããããå人å©çšã¯ãããŸã§éãç¡åã ãã©ã€ã»ã³ã¹ç»é²ãå¿ èŠã«ãªããããã§ãæ¬çš¿ã§ã¯PySimpleGUIã䜿ãç¶ããæ¹æ³ãšãäºæã©ã€ãã©ãªãTkEasyGUIãã«ä¹ãæããæ¹æ³ã®äºã€ã玹ä»ããã
ç°¡åGUIã©ã€ãã©ãªãPySimpleGUIãã«ã€ããŠ
æ¬é£èŒã®109åç®ã§PySimpleGUIã®äœ¿ãæ¹ã玹ä»ãããPySimpleGUIã¯ç¬èªã®ã€ãã³ãã¢ãã«ãæ¡çšããäºæ¬¡å ãªã¹ãã䜿ã£ãŠæè»œã«GUIãæ§ç¯ã§ããã©ã€ãã©ãªã ã
-

PySimpleGUIã®Webãµã€ã - https://www.pysimplegui.com
Pythonã§GUIãæã€ãã¹ã¯ãããã¢ããªãéçºããã«ã¯ãTkinterãPyQtãªã©ãããã€ãã®éžæè¢ããããããããããããæ¬æ ŒçãªGUIãäœãã®ã«ã¯åããŠããããã¡ãã£ãšããããŒã«ãçŽ æ©ãäœãããå Žåã«ãåŠç¿ã³ã¹ãã®åé¡ãéçºãç ©éãšããåé¡ããã£ãã
ãããããPythonã§GUIã¢ããªãäœãã®ã¯ããªããªã骚ãæããããšããåžžèãæã¡ç Žã£ãã®ããPySimpleGUIã ãäžèšã®ããã«ãäºæ¬¡å ã®ãªã¹ãã«å©çšãããGUIéšåãé 眮ããã ãã§ãç»é¢ãèšèšã§ããã®ãçŽ æŽããããšããã ã
import PySimpleGUI as sg
# GUIãå®çŸ©ãã --- (*1)
layout = [
[sg.Text("ååãå
¥åããŠOKãã¿ã³ãæŒããŠãã ãã")],
[sg.Input("倪é",key="-name-"), sg.Button("OK")],
]
# ãŠã£ã³ããŠãäœæãã --- (*2)
window = sg.Window("åå", layout)
# ã€ãã³ããåŠç --- (*3)
while True:
# GUIã§çºçããã€ãã³ããäžã€èªã --- (*4)
event, values = window.read()
if event == sg.WIN_CLOSED: # ãŠã£ã³ããŠãéããæã®åŠç --- (*5)
break
if event == "OK": # OKãã¿ã³ãæŒãããæã®åŠç --- (*6)
name = values["-name-"]
sg.popup(f"ããã«ã¡ã¯ã{name}ãã")
Pythonããã±ãŒãžã®ãPySimpleGUIããã€ã³ã¹ããŒã«ããå®è¡ãããšäžèšã®ããã«è¡šç€ºãããã(ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«ã€ããŠã¯åŸè¿°ããã)
ããã°ã©ã ã確èªããŠã¿ããã(ïŒ1)ã®éšåã§ç»é¢ãå®çŸ©ããŠãããããã°ã©ã ã®å®è¡ç»é¢ãšãããã§å®çŸ©ããäºæ¬¡å ãªã¹ããèŠæ¯ã¹ãŠã¿ããããªããšãªãäºæ¬¡å ãªã¹ããšGUIéšåã®èŠãç®ãäžèŽããŠããã®ãåããã ããã
(ïŒ2)ã§ãŠã£ã³ããŠãäœæããŠã(ïŒ3)以éã§ãã¿ã³ãæŒããæãªã©ã®ã€ãã³ããåŠçãããGUIãæã€ããã°ã©ã ã§ã¯ããŠãŒã¶ãŒããã¿ã³ãæŒãããããŠã£ã³ããŠãéããããšãã£ãã¢ã¯ã·ã§ã³ãè¡ããã³ã«ããããã©ã®ããã«åŠçãããããéçºè ãæ±ºããŠåŠçããªããŠã¯ãããªãã
ããã§ããŠã£ã³ããŠã衚瀺ãããŠããéãç¹°ãè¿ã(ïŒ4)ã«ããããã«ãã€ãã³ããååŸããŠããããã©ã®ããã«åŠçããããèšè¿°ããã(ïŒ5)ã§ã¯ãŠã£ã³ããŠãéããæã®åŠçãèšè¿°ãã(ïŒ6)ã§ã¯OKãã¿ã³ãæŒãããæã®åŠçãèšè¿°ããã
(ïŒ6)ãèŠããšåããããã«ããOKããã¿ã³ãã¯ãªãã¯ããæã«ã¯ããOKããšããã€ãã³ããçºçããããã«ãªãã®ã§ããšãŠãçŽæçã«åŠçãã§ããã
ãã®ããã«ãPySimpleGUIã䜿ããšããšãŠãç°¡åã«ç¬èªã®ãã¶ã€ã³ã®GUIãŠã£ã³ããŠãèšèšããåŠçããããã°ã©ã ãäœæã§ãããåŸæ¥ã®GUIãã¬ãŒã ã¯ãŒã¯ã§ã¯ãç¬èªã®é 眮ã¡ãœãããåŒã³åºãããã座æšãæå®ããããšããšãŠãæéãããããã®ã ã£ãã
PySimpleGUI 5ãã€ã³ã¹ããŒã«ããã
å æ¥(2024幎2æ)ã«ãPySimpleGUI 5ãç»å Žããããã ãããããŸã§ãšäžçªå€§ããªéãã¯åçšã§ã®å©çšãæååãããããšã ããããŸã§ãªãŒãã³ãœãŒã¹ã®ã©ã€ã»ã³ã¹ã§ããLGPLãæ¡çšããŠãããèªç±ã«å©çšã§ããã®ã ããããŒãžã§ã³5ãããã©ã€ã»ã³ã¹åœ¢æ ãäžå€ãããå人å©çšã¯åŒãç¶ãç¡æã ãããã®å Žåããã©ã€ã»ã³ã¹ç»é²ãå¿ èŠã«ãªã£ãããã ãã30æ¥éã®ç¡æå©çšæéãèšããããŠããã
ãããŸã§PySimpleGUIã䜿ã£ãŠãããŠãŒã¶ãŒã¯ãã©ã€ã»ã³ã¹æ(1幎99ç±³ãã«)ãæã£ãŠäœ¿ãç¶ããããPySimpleGUIã®äºæã©ã€ãã©ãªã«ä¹ãæããã®ããšããéžæãè¿«ãããããšã«ãªã£ãã
ãã¡ãããäžè¿°ã®ããã«ãPySimpleGUIã¯æè»œã«GUIãæ§ç¯ã§ããåªç§ãªã©ã€ãã©ãªã§ãããéçºè ã¯é·å¹Žç¡åã§ã³ãã³ããšãµããŒããç¶ããŠãããŠããããããããç¶ç¶çãªãµããŒããè¡ãããããšãæåŸ ããŠã幎éã©ã€ã»ã³ã¹ãæããšããã®ãæªãããšã§ã¯ãªãã ããã
ãªããã©ã€ã»ã³ã¹ã®ååŸããŒãžã¯ãå šãŠè±èªã§ãããããæ¬çš¿ã§ã¯ç°¡åã«ã©ã€ã»ã³ã¹ã®ååŸæ¹æ³ã玹ä»ããã
æåã«ãPySimpleGUIã®ãµã€ã³ã¢ããã®ããŒãžïŒãã¡ã - https://www.pysimplegui.com/pricing)ã«ã¢ã¯ã»ã¹ãããããããŠãå人å©çšã§ããã°ãHobbyistãããåçšå©çšã§ããã°ãCommercialããéžæãããã
ãããšã次ã®ããã«ã¢ã«ãŠã³ãã®äœæç»é¢ã«ãªãããã©ãŒã ã«èšå ¥ããŠãRegister(ç»é²ãã)ããã¿ã³ãæŒãããåºæ¬çã«ã¯é£ãããªãããç»é²ã«ã¯GitHub IDãå¿ èŠã«ãªããGitHubã®ç»é²ã¯èŠªåãªããã¥ã¢ã«ããã¡ãã«ããã®ã§åèã«ãããã
ãã®åŸãã¡ãŒã«ã«ããèªèšŒãè¡ããããã¡ãŒã«ã«æžãããæ°åãå ¥åãããšãç»é²ãå®äºããããããšãã©ã€ã»ã³ã¹ããŒãçºè¡ãããã®ã§ä¿åããŠãããã
ç¶ããŠãPySimpeGUIã®ææ°çãã€ã³ã¹ããŒã«ãããã¿ãŒããã«(WindowsãªãPowerShelãmacOSãªãã¿ãŒããã«.app)ãèµ·åããŠã以äžã®ã³ãã³ããå ¥åãããïŒâ»Windowsã®å Žåãpython3ãpythonã«ïŒã
python3 -m pip install pysimplegui
ãã®åŸãæ¬é£èŒã®åé ã§ç޹ä»ããããã°ã©ã ããsimple.pyããšããååã§ä¿åããŠãã¿ãŒããã«ã§ãpython simple.pyããå®è¡ãããããããšæ¬¡ã®ãããªç»é¢ã衚瀺ããããç»é¢äžã®ãI accept the terms...(èŠçŽã«åæãã)ãã«ãã§ãã¯ãå ¥ããŠãOkããã¿ã³ãã¯ãªãã¯ãããšãã©ã€ã»ã³ã¹ããŒã®å ¥åç»é¢ãåºãã®ã§ãäžèšã®ã©ã€ã»ã³ã¹ãå ¥åãããã
-

PySimpleGUIãå©çšããããã°ã©ã ãå®è¡ãããšã©ã€ã»ã³ã¹ã®å ¥åç»é¢ã衚瀺ããã
äºæã©ã€ãã©ãªãTkEasyGUIãã«ã€ããŠ
å®éã®ãšãããPySimpleGUIã¯ãšãŠã髿©èœãªã©ã€ãã©ãªã ãå¹ åºãçšéã«å¿ããå€ãã®GUIéšåãå©çšã§ããããšã¯èšããç°¡åã«GUIã¢ããªãäœããããšããçšéã«ãããŠã¯ãåºæ¬çã«ãã¿ã³ããšãã£ã¿ãªã©ãåºæ¬çãªGUIéšåãå©çšã§ããã°è¯ããŠãããã»ã©é«æ©èœãªGUIéšåãå¿ èŠãªãå Žé¢ãããã ããããããªå Žé¢ã§ã¯ãPySimpleGUIã®äºæã©ã€ãã©ãªãæ€èšã§ããã ããã
äºæã©ã€ãã©ãªã®çé ããTkEasyGUIããšããã©ã€ãã©ãªã ãæåå³åã§æçž®ã§ã¯ããããçè ãGitHubã§ãªãŒãã³ãœãŒã¹ã®åœ¢æ ã§éçºããŠãããä»åã®PySimpleGUIã®æååã«äŒŽãèªäœã®ã¢ããªã§æ¡çšããã®ã«äŸ¿å©ãªç·©ããªãŒãã³ãœãŒã¹ã®ã©ã€ã»ã³ã¹MITãæ¡çšããå°æ¥ã«ããã£ãŠã©ã€ã»ã³ã¹å€æŽãããªãããšã謳ã£ãŠããã
-

TkEasyGUIã®Webãµã€ã - https://github.com/kujirahand/tkeasygui-python/
å®å šäºæã§ã¯ãªããã®ã®ãåºæ¬çãªãã¿ã³(Button)ããšãã£ã¿(Input)ãç»å衚瀺(Image)ãå³åœ¢æç»(Canvas)ãªã©ã®GUIéšåãåããŠãããPySimpleGUIã®äž»èŠãªããããã£ãå®è£ ããŠããã
TkEasyGUIãã€ã³ã¹ããŒã«ããã«ã¯ãã¿ãŒããã«ã§ä»¥äžã®ã³ãã³ããå®è¡ãããã
python -m pip install tkeasygui
ãããŠãäžèšã®ããã°ã©ã ã®äžè¡ç®ã«ããimportæã次ã®ããã«ä¿®æ£ãããã
# import PySimpleGUI as sg
import tkeasygui as sg
ããã ãã®äœæ¥ã§ãå ã»ã©ã®ããã°ã©ã ãåãããã«åããããšãã§ãããããã°ã©ã ãåããã«ã¯ãããã°ã©ã ãæžãæããŠä¿åããããã¿ãŒããã«ãããpython simple.pyããšå®è¡ãããã
å®è¡ç»é¢ãæ¯ã¹ãŠã¿ããšåããã®ã ããèŠãç®ãå°ãã ãç°ãªãã®ãåããã ãããããã¯ãPythonæšæºã®GUIããŒã«ãããTkinterãçŽ ã®ãŸãŸå©çšããŠããããã ãããããããOSã®æåã«åããããã¶ã€ã³ãšãªã£ãŠããã
ãŸããTkEasyGUIãã¹ã¯ã©ããããäœãã®ã«åœãã£ãŠãPySimpleGUIãå©çšããŠããŠäžäŸ¿ã ãšæãç¹ããã£ãã®ã§ãäºææ§ãç¶æãã€ã€ãããããæ¹è¯ããŠã¿ãã
ç¹ã«ãPySimpleGUIã§ã¯ã€ãã³ãã«ãŒããèšè¿°ããéãå¿ ãããŠã£ã³ããŠãéããã€ãã³ããå®çŸ©ããå¿ èŠããã£ãããTkEasyGUIã§ã¯ãã€ãã³ãã«ãŒãã工倫ããŠã次ã®ããã«ãwhile window.is_alive()ãããã§ãã¯ããã ãã§è¯ããªãããã«ããŠã¿ãã
以äžã¯ãTkEasyGUIã§ãã©ã«ããéžæããç»é¢ãäœã£ãŠã¿ããã®ã ã
import tkeasygui as sg
# GUIãå®çŸ©ãã
layout = [
[sg.Text("ãã©ã«ããã¹ãæå®ããŠãã ãã:")],
[sg.Input("",key="-path-"), sg.FolderBrowse()],
[sg.Checkbox("ãµããã©ã«ããå«ãã", key="-sub-")],
[sg.Button("OK")]
]
window = sg.Window("ãã©ã«ãéžæ", layout)
# ã€ãã³ããåŠç
while window.is_alive(): # ãŠã£ã³ããŠãæå¹ã確èª--- (*1)
# ã€ãã³ããååŸ
event, values = window.read()
if event == "OK": # OKãã¿ã³ãæŒãããæã®åŠç
sg.popup(f"次ã®ãã©ã«ããåŠçããŸã\n{values['-path-']}")
ããã»ã©å€§ããªéãã¯ãªãã®ã ãã(ïŒ1)ã®ããã«ãŠã£ã³ããŠãæå¹ãã©ããã確èªããããšã§ãæ¯åãèšè¿°ããŠãããŠã£ã³ããŠãéãããã©ããã®å€å®åŠçãçããããã«ããã
ãªãããã以å€ã®éšåã¯PySimpleGUIã䜿ã£ãããšããã人ã«ãšã£ãŠã¯ã銎æã¿ã®ãã®ã ãããåºæ¬çãªGUIéšåãPySimleGUIãšåæ§ã«äœ¿ãããšãã§ããã
ã¡ãªã¿ã«ããªãŒãã³ãœãŒã¹ã®ãããžã§ã¯ããæååãããéãããããã®ããæå¿ãæ¢åã®ãããžã§ã¯ãããã©ãŒã¯ããŠïŒä»¥åã®ãœãŒã¹ã³ãŒããå ã«ããŠïŒãæ°ãããããžã§ã¯ããç«ã¡äžãããšããã®ããããããããPySimpleGUIã¯æååã«äŒŽããããŸã§ãªãŒãã³ãœãŒã¹ãšããŠå ¬éããŠããã³ãŒãã®å ¬éãæ¢ããŠããœãŒã¹ã³ãŒããåç §ã§ããªãããã«ããŠããŸã£ããããã§ãäºæã©ã€ãã©ãªã®TkEasyGUIã¯å ¬éæ å ±ã ããå ã«ãã€ã€ããŒãããã©ã€ãã©ãªãå®è£ ãããã®ã ã
ãŸãšã
Pythonã§æè»œã«GUIã¢ããªãéçºã§ããããã«ããPySimpleGUIã®å瞟ã¯å€§ãããè€éãªGUIã¢ããªã®éçºããšãŠãç°¡åã«ãªããåçšå©çšãæååãããå人å©çšã§ãã©ã€ã»ã³ã¹ã®ååŸãå¿ èŠã«ãªã£ããããæ¬çš¿ã§ã¯ãã©ã€ã»ã³ã¹ç»é²ã®æ¹æ³ã玹ä»ããã
ããããæååãããŠããŸã£ããããäžå°äŒæ¥ã§ãäœæ¥ãã¡ãã£ãšèªååãããã ãããšããå Žé¢ã§ããåçšå©çšãšãªããã幎éã©ã€ã»ã³ã¹ã®è³Œå ¥ãå¿ èŠã«ãªã£ãŠããŸã£ããããã§äºæã©ã€ãã©ãªã®ãTkEasyGUIãã®åºçªãšãªããPySimpleGUIã»ã©é«æ©èœãªGUIãå¿ èŠã§ã¯ãªããã®ã®ãã¡ãã£ãšäŸ¿å©ãªã¢ããªãäœã£ãŠå©çšããããšãããŠãŒã¶ãŒã«åããã©ã€ãã©ãªã ããã¡ãããPythonã«ã¯ä»ã«ããããããªGUIã©ã€ãã©ãªãããã®ã§ãããã䜿ãããšãã§ããããéžæè¢ã®äžã€ãšããŠèããŠããããã°å¹žãã ã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠãããçŽè¿ã§ã¯ããå®è·µåãã¢ãããã Pythonã«ããã¢ã«ãŽãªãºã ã®æç§æž(ãã€ããåºç)ããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããããã«äœ¿ãã!æ¥åã§å®è·µã§ãã! Pythonã«ããAIã»æ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã¢ããªã®ã€ããæ¹ TensorFlow2察å¿(ãœã·ã )ãããã³ã¬ã§ãã£ããåŠã¶Python(ãã€ããåºç)ããªã©ã






