Pythonã«ã¯ãæšæºã§Windows/macOS/Linuxã®ãã¹ã¯ãããåãã¢ããªãäœæããTkinterãšããã©ã€ãã©ãªãåãã£ãŠããããã®ã©ã€ãã©ãªã䜿ããšããã¿ã³ããšãã£ã¿ãªã©GUIãæã€ã¢ããªãäœãããšãã§ãããä»åã¯ããã¹ã¯ãããã¢ããªã®éçºæ¹æ³ã玹ä»ãããäœæäŸãšããŠãè¥æºåºŠå€å®ãè¡ãBMIèšç®ããŒã«ãäœã£ãŠã¿ãããããã§äœæããã®ã¯èº«é·ãšäœéãå ¥åãããšãBMIå€ãšè¥æºåºŠã衚瀺ããããŒã«ã ã
ãã¹ã¯ãããã¢ããªãšã¯ïŒ
ãšããã§ãããã¹ã¯ãããã¢ããªããšã¯äœã ããããWindowsãmacOSãªã©ããœã³ã³äžã§åäœããã¢ããªã®ããšã ãæšä»ãã¢ããªãšèšãã°ãã¹ããŒããã©ã³ã察象ã«ããã¢ããªãæãããšãå¢ãããããã§ãã¹ããã¢ããªã«å¯ŸããŠãããœã³ã³ã§åäœããã¢ããªããããã¹ã¯ãããã¢ããªããšåŒã¶ã
Pythonã§ãã¹ã¯ãããã¢ããªãäœæããã«ã¯ãããã€ãã©ã€ãã©ãªããããPythonã«æšæºçã«å梱ãããŠãããTkinterããã¯ãã¹ãã©ãããã©ãŒã 察å¿ã§äººæ°ããããKivyããwxWidgetsãšããããŒã«ããããå©çšãããwxPythonããQtãšããããŒã«ããããå©çšãããPyQtããªã©ã§ããããã§ã¯ãæè»œã«æ±ããã©ã€ãã©ãªãTkinterãã®äœ¿ãæ¹ã玹ä»ãããã
Tkinterã䜿ããã確èªããŠã¿ãã
ãªãããTkinterãã¯ãPythonæšæºä»å±ã®ã©ã€ãã©ãªã§ããããå éšçã«ã¯ãTcl/TkããšããGUIã©ã€ãã©ãªãå©çšããŠãããTkinterã䜿ãã«ã¯Tcl/Tkãå¿ èŠã«ãªããããããPythonãã€ã³ã¹ããŒã«ãããšãæåããTcl/Tkã®ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãããã¯ãã ã
ãšã¯ãããã€ã³ã¹ããŒã«ã®éã«äœãããã®çç±ã§Tck/Tkãå ¥ã£ãŠããªããšããå¯èœæ§ãããã®ã§ãåããã©ããã確èªããŠã¿ããã
æ¬é£èŒã§ã¯Pythonã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®äžã€ãAnacondaããã€ã³ã¹ããŒã«ãããŠããããšã念é ã«çœ®ããŠãããã€ã³ã¹ããŒã«ããŠããªã人ã¯ããã¡ããåèã«ã€ã³ã¹ããŒã«ãããã
Windowsã§ã¯ãWindowsã¡ãã¥ãŒãã[Anaconda3 > Anaconda Prompt]ãèµ·åããããmacOSã§ã¯ã¿ãŒããã«.appãèµ·åãããããããŠã以äžã®ã³ãã³ããå®è¡ããŠã¿ããã
python -m tkinter
æ£ããã€ã³ã¹ããŒã«ãè¡ãããŠããå Žåã以äžã®ããã«ãTcl/Tkã®ãŠã£ã³ããŠã衚瀺ãããã
Pythonã¯ãWindows/macOS/Linuxã«å¯Ÿå¿ããŠããããTkinterã䜿ã£ãããã°ã©ã ã¯ã ãããåãããã«åããããšãã§ããã
ãã ããmacOSã§ãã®ãã¹ãããã°ã©ã ãå®è¡ãããšããããã¿ã³ã®æåãåããŠããŸã£ãŠãããããŠã¹ã§ãŠã£ã³ããŠã倧ãã調æŽããããšã§ãWindowsã§å®è¡ããã®ãšåãããã«è¡šç€ºããããè€æ°OSã«å¯Ÿå¿ããå Žåã¯ãã¬ã€ã¢ãŠãã«äœè£ãæãããå¿ èŠãããã ããã
ãŸããããããšã©ãŒãåºãŠãŠã£ã³ããŠãåºãªãå Žåã«ã¯ãTcl/Tkãã€ã³ã¹ããŒã«ãããŠããªãå ŽåããããPythonã®ã€ã³ã¹ããŒã«ãããçŽãããActiveStateããããŠã³ããŒãã§ããã
äžçªç°¡åãªTkinterã®ããã°ã©ã
ããã§ã¯ãäžçªç°¡åãªTkinterã®ããã°ã©ã ãäœã£ãŠã¿ããã以äžã¯ãTkinterã®ãŠã£ã³ããŠã衚瀺ããã ãã®æ¥µããŠåºæ¬çãªããã°ã©ã ã ã
# Tkinterã®ã©ã€ãã©ãªãåã蟌ã --- (*1)
import tkinter as tk
# ãŠã£ã³ããŠãäœæ --- (*2)
win = tk.Tk()
win.title("Hello, World!") # ã¿ã€ãã«
win.geometry("400x300") # ãµã€ãº
# ãŠã£ã³ããŠãåãã --- (*3)
win.mainloop()
äžèšã®ããã°ã©ã ããhello_tk.pyããšããååã§ä¿åãããããããŠãã³ãã³ãã©ã€ã³ãã以äžã®ã³ãã³ããå®è¡ãããšã次ã®ããã«ãHello, World!ããšããã¿ã€ãã«ã®ãŠã£ã³ããŠã衚瀺ãããã
ããã°ã©ã ã確èªããŠã¿ããã(ïŒ1)ã§ã¯tkinterã®ã©ã€ãã©ãªãåã蟌ããPython3.xã§ã¯ãtkinterããšå šéšå°æåã§æžãã®ãæ£åŒãªã©ã€ãã©ãªåã ãPython2ã§ã¯ãTkinterããšäžæåç®ã ã倧æåã ã£ãããããäžã«ããTkinterã®è³æã®äžã«ã¯ãPython2ã®ãã®ã§å€ãè³æã§ããããšãå€ãã®ã§æ³šæãããã
ããã°ã©ã ã®(ïŒ2)ã®éšåã§ã¯ããŠã£ã³ããŠãäœæãã¿ã€ãã«ãšãµã€ãºãæå®ããŠããããããŠã(ïŒ3)ã®éšåã§ã¯ããŠã£ã³ããŠãããŠã¹æäœãªã©ã«å¯Ÿå¿ã§ãããããã¡ã€ã³ã«ãŒããå®è¡ãããTkinterãå©çšãããã¹ã¯ãããã¢ããªã§ã¯ããã®äžè¡ãéèŠã«ãªããæžãå¿ããªãããã«ãããã
ã©ãã«ãšããã¹ãããã¯ã¹ãšãã¿ã³ã䜿ã£ãŠã¿ãã
ãŠã£ã³ããŠãå©çšããããã°ã©ã ã§ã¯ãããã¹ãããã¯ã¹ãã©ãã«ããŠã£ã³ããŠäžã«é 眮ããããšã§ãããã°ã©ã ã®èŠãç®ãæ§æããŠããã
以äžã¯ãã©ãã«(Label)ãšããã¹ãããã¯ã¹(Entry)ãšãã¿ã³(Button)ãæŽ»çšããäŸã ã
ããã¹ãããã¯ã¹ã«ååãæžã蟌ãã§OKãã¿ã³ãæŒããšãååå ¥ãã®æšæ¶ã衚瀺ãããšããç°¡åãªããã°ã©ã ãäœã£ãŠã¿ããã以äžã®ããã°ã©ã ããgui.pyããšããååã§ä¿åãããã
import tkinter as tk
from tkinter import messagebox as mbox
# ãŠã£ã³ããŠãäœæ --- (*1)
win = tk.Tk()
win.geometry("500x250") # ãµã€ãºãæå®
# éšåãäœæ --- (*2)
# ã©ãã«ãäœæ
label = tk.Label(win, text='ååã¯?')
label.pack()
# ããã¹ãããã¯ã¹ãäœæ
text = tk.Entry(win)
text.pack()
text.insert(tk.END, 'ã¯ãžã©') # åæå€ãæå®
# OKãã¿ã³ãæŒããæ --- (*3)
def ok_click():
# ããã¹ãããã¯ã¹ã®å
容ãåŸã
s = text.get()
# ãã€ã¢ãã°ã衚瀺
mbox.showinfo('æšæ¶', s + 'ãããããã«ã¡ã¯!')
# ãã¿ã³ãäœæ --- (*4)
okButton = tk.Button(win, text='OK', command=ok_click)
okButton.pack()
# ãŠã£ã³ããŠãåãã
win.mainloop()
ã³ãã³ãã©ã€ã³ã§ãpython gui.pyããå®è¡ãããšã以äžã®è¡šã«ããã°ã©ã ãå®è¡ãããã
ããã°ã©ã ã確èªããŠã¿ããã(ïŒ1)ã®éšåã§ã¯ããŠã£ã³ããŠãäœæããã
ãããŠã(ïŒ2)ã®éšåã§ã¯ãã©ãã«ãããã¹ãããã¯ã¹ãäœæãããtk.Label(...)ããtk.Buttonãšæžããšã©ãã«ããã¿ã³ãªã©ã®éšåãäœæãããããããŠãpack()ãšèšè¿°ãããšãäœæããéšåããŠã£ã³ããŠäžã«é 眮ããããšãã§ããã
(ïŒ3)ã§ã¯ãã¿ã³ãæŒããæã®åŠçãèšè¿°ããŠãããããã§ã¯ã(ïŒ2)ã§äœæããããã¹ãããã¯ã¹ã®å 容ãååŸããŠãã¡ãã»ãŒãžããã¯ã¹ã«ãïŒïŒãããããã«ã¡ã¯ïŒãã®ããã«è¡šç€ºããããã«ããŠããã
æåŸ(ïŒ4)ã®éšåã§ã¯ããã¿ã³ãäœæããŠã£ã³ããŠã«ãã¿ã³ãé 眮ããããŸããã¯ãªãã¯ããæã«ãok_click颿°ãå®è¡ãããããã«æå®ããã
ãã®ããã«ããŠã£ã³ããŠã䜿ã£ãããã°ã©ã ã§ã¯ãå®çŽã«åŠçãäžããäžã«æµããã®ã§ã¯ãªãããã¿ã³ãæŒãããã©ããªããããŒããŒããæŒããã©ããªãããšããæµãã§ããã°ã©ã ãæ§ç¯ããŠãããéåžžã®ããã°ã©ã ãããè€éã«ãªããã¡ãªã®ã§ãæŽçããŠèšè¿°ããç¿æ £ãã€ããŠãããã
è¥æºåºŠå€å®ããã°ã©ã ãäœãã
ããã§ã¯ãåºæ¬çãªTkinterã®äœ¿ãæ¹ãåãã£ããšããã§è¥æºåºŠå€å®ããã°ã©ã ãäœã£ãŠã¿ããã
import tkinter as tk
# ãã¿ã³ãæŒãããšãã®åŠç --- (*1)
def calc_bmi():
# BMIãèšç®
h = float(textHeight.get()) / 100
w = float(textWeight.get())
bmi = w / h ** 2
rw = h ** 2 * 22
per = int(w / rw * 100) - 100
# çµæãã©ãã«ã«è¡šç€º
s = "è¥æº {0}% (bmi={1})".format(per, bmi)
labelResult['text'] = s
# ãŠã£ã³ããŠãäœæ --- (*2)
win = tk.Tk()
win.title("è¥æºå€å®")
win.geometry("500x250")
# éšåãäœæ --- (*3)
labelHeight = tk.Label(win, text=u'身é·(cm):')
labelHeight.pack()
textHeight = tk.Entry(win)
textHeight.insert(tk.END, '160')
textHeight.pack()
labelWeight = tk.Label(win, text=u'äœé(kg):')
labelWeight.pack()
textWeight = tk.Entry(win)
textWeight.insert(tk.END, '70')
textWeight.pack()
labelResult = tk.Label(win, text=u'---')
labelResult.pack()
calcButton = tk.Button(win, text=u'èšç®')
calcButton["command"] = calc_bmi
calcButton.pack()
# ãŠã£ã³ããŠãåãã
win.mainloop()
ããã°ã©ã ãå®è¡ããã«ã¯ãã³ãã³ãã©ã€ã³ã§ãpython bmi.pyããšå®è¡ãããã以äžã®ããã«ããã°ã©ã ãå®è¡ããããããã§ã身é·ãšäœéãæžã蟌ãã§ãèšç®ããã¿ã³ãã¯ãªãã¯ãããšãè¥æºåºŠãšBMIã®å€ã衚瀺ãããã
ããã°ã©ã ã確èªããŠã¿ãããããã°ã©ã ã®(ïŒ1)ã®éšåã§ãèšç®ãã¿ã³ãæŒããæã®åŠçãèšè¿°ããŠãããããã§ã¯ãããã¹ãããã¯ã¹ã«å ¥åãã身é·ãšäœéã®å€ãååŸãBMIãèšç®ããããããŠãèšç®çµæãã©ãã«ã«è¡šç€ºããã
ãããŠã(ïŒ2)ã®éšåã§ã¯ãŠã£ã³ããŠãäœæãã(ïŒ3)ã§ã¯éšåãäœæãããŠã£ã³ããŠäžã«é 眮ãããããã§ã¯ã身é·ãšäœéã«ã€ããŠãããããã©ãã«ãšããã¹ãããã¯ã¹ãäœæããããã«ãçµæã衚瀺ããã©ãã«ãšèšç®ãã¿ã³ãäœæããããããŠãèšç®ãã¿ã³ãã¯ãªãã¯ããããcalc_bmiãåŒã³åºãããã«æå®ããã
ãŸãšã
以äžãä»åã¯Tkinterãå©çšããŠããã¹ã¯ãããã¢ããªãäœ¿ãæ¹æ³ã玹ä»ãããããã§ç޹ä»ããããã«ãPythonã䜿ãã°ããã¿ã³ãããã¹ãããã¯ã¹ãå©çšãããã¹ã¯ãããã¢ããªãç°¡åã«äœæã§ãããã¡ãã£ãšããèªåããŒã«äœæã«äŸ¿å©ã ãèŠç©ããããŒã«ãå®ååŠçãå®è¡ããã©ã³ãã£ãŒãªã©ãã¢ã€ãã¢æ¬¡ç¬¬ã§ããããäœãããšãã§ããã ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠããã






