ä»åããã¯TkinterãšããPythonã®GUIã©ã€ãã©ãªã䜿ã£ãŠãGUIã¢ããªã±ãŒã·ã§ã³ã®äœ¿ãæ¹ã«ã€ããŠåŠãã§ã¿ãããšæããŸãã
GUIã¯åå¿è åããšã¯èšãã¥ãããšããããããŸããã
- èªåãäœããããã®ãæ³åãããã
- ãªããžã§ã¯ãæåã«æ £ã芪ããã®ã«åããŠãã
ãšããç¹ãããåçŽè ããäžçŽè ã«ãªãããã®ã¹ããããšããŠã¯ãã¹ããªãã®ã ãšç§ã¯èããŠããŸãã
Pythonã§GUIã䜿ããšãã£ãŠãããŸããŸãªã©ã€ãã©ãªããããTkinterããã¹ãã§ã¯ãªãå ŽåããããŸãããŸããããããPythonã§ã¯ãªãã»ãã®èšèªãçšããŠäœãã¹ãã§ããå¯èœæ§ãããããŸããä»åã¯ãããŸã§ãåŠç¿ç®çã¡ã€ã³ãªã®ã§ããã®ãããã®ããšã¯ã容赊ãã ããã
ãŸããæ¬é£èŒã¯GUIãã¡ã€ã³ãšããŠããããã§ã¯ãªãã®ã§ãåœç¶ãªããTkinterã®ãã¹ãŠã¯ã«ããŒããããŸãããç°¡åãªäœ¿ãæ¹ç޹ä»ãå®äŸããšãããŠãGUIã®ä»çµã¿ããªããžã§ã¯ãæåã«ã€ããŠçè§£ããŠãããããšãç®æšã«ããŠããã®ã§ãèå³ãããããã¯ã»ãã®WebããŒãžãæ¬ãªã©ã掻çšããŠãã ããã
Tkinterã®ç޹ä»ãšæ¬é£èŒã§äœããµã³ãã«
WindowsãMacäžã®ã¢ããªã±ãŒã·ã§ã³ãåœç¶ãªããããã°ã©ã ã§äœãããŠããŸããããããæãæµ®ãã¹ããšãããå ±éç¹ãããããšãããããŸãããããŸãäžè¬çã«ã¢ããªã±ãŒã·ã§ã³ã¯ãŠã£ã³ããŠãšããåœ¢ã§æäŸããããã®ãªãã«ãã¿ã³ãããã¹ããæžãé åãããã«ã¡ãã¥ãŒãªã©ãååšããŠããŸãã
GUIã¯ãããã®ãèŠãç®ããäœãããšã«ç¹åããã©ã€ãã©ãªã§ããã©ã€ãã©ãªã®ç¹å®ã®é¢æ°ãåŒã³åºãããšã§ãŠã£ã³ããŠãã¡ãã¥ãŒãäœæããããå Žåã«ãã£ãŠã¯ã©ã€ãã©ãªã®ã¯ã©ã¹ãç¶æ¿ããããšã§çްããæåãèŠãç®ãäœã£ããããŸãã
Tkinterããããã£ãGUIã®ã©ã€ãã©ãªã§ãããPythonã§å©çšãããŸãããã ãTkinterã¯Pythonã§äžããäœããããã®ãšããããã¯ãTkãšããæ±çšã®GUIã®ããŒã«ããããPythonã§å©çšã§ããããã«ãããã®ã§ãããã®ä»çµã¿ã以äžã®å³ã«èšããŸãã
äžèšå³ã«ããããã«ããŸãTkãšåŒã°ããŠããGUIã®ããŒã«ãããããããPythonãããããã©ãããããŠãããããªã€ã¡ãŒãžã§ãããã®ã©ãããããPythonã®ã©ã€ãã©ãªãTkinterãšåŒãã§ããŸããTkã¯ã»ãã®èšèªã§ãå©çšãããŠããŠãããšãã°å³ã«ããããã«ãRubyã§ãå©çšãããŠããŸãã
ä»åã¯ãã®TkinterãšPythonã䜿ã£ãŠã以äžã®ãããªã«ãŠã³ã¿ãŒãå®è£ ããããšãç®æšã«ããŸãã
èŠãŠããããšããããŸãããclickãšæžãããŠãããã¿ã³ãæŒããšè¡šç€ºãããŠããã«ãŠã³ã¿ãŒã®æ°ãå¢ããŸãã
GUIã®åºæ¬çãªèãæ¹
GUIãšãã£ãŠããã©ãŠã¶äžã§åããã®ããã¹ã¯ãããã¢ããªãšããŠåããã®ãªã©ãããããããŸãããã ãããäžå®ã®èŠæš¡ã®GUIã®ã¢ããªãæ§ç¯ããå Žåãåºæ¬çã«GUIã®ãŠã£ã³ããŠã¯å ¥ãåæ§é ã§æ§æãããŠããå Žåãå€ãã§ãã
ããšãã°ä»¥äžã®å³ã®ããã«ãªããŸãã
å·ŠåŽã«ã¢ããªã®ç»é¢ã®æŠå¿µå³ãå³åŽã« GUIã®ããŒãã®éå±€æ§é ãæžãããŠããŸããã¿ãŠãããããã«Frame1ã¯Frame2, 3ãå éšã«æã£ãŠããŠããããã瞊ã«äžŠã¹ãŠè¡šç€ºãããŠããŸãããããŠFrame2ãäžã«Widget1,2,3,4ãæã£ãŠããããããæšªã«è¡šç€ºãFrame3ã¯Widget5,6ãæã¡ã瞊ã«è¡šç€ºãšãã£ãå ·åã§ãã
ãã®ãšã倧åãªã®ã¯ãFrame1,2,3 ãWidgetã¯å¿ èŠã«å¿ããŠé©åãªãã®ãéžã°ããå Žåã«ãã£ãŠã¯ãç¶æ¿ãã§ã«ã¹ã¿ãã€ãºãããŠãããšããããšã§ãããã®ãããã®è©±ã¯åŸåã§æ±ããŸãã
Tkinterã®äœæ³
詳ããGUIã®äœ¿ãæ¹ãçè§£ããããã«ã¯ããŸãåºç€ãšãªãäœæ³ãåŠã¶å¿ èŠããããŸãã ãã®ãããç°¡åãªãã®ããé ã远ã£ãŠèª¬æããŠãããããšæããŸãã
ãŸãæåã«ä»¥äžã®å³ã®ãã®ãäœããŸãã
ãããå®çŸããã³ãŒãã¯ä»¥äžãšãªããŸãã
import Tkinter as tk
font=("Helevetica", 32, "bold")
label = tk.Label(text="Hello Tkinter", font=font, bg="red")
label.pack()
label.mainloop()
ã³ãŒãã®è§£èª¬ããããšããŸãæåã«Tkinterã䜿ãããã«ã©ã€ãã©ãªãã€ã³ããŒãããŠããŸããimport X as YãšãããšãXãšããã©ã€ãã©ãªãYãšããååã§äœ¿ãããšãã§ããŸããTkinterãšããååãé·ãã®ã§tkãšããŠããŸãã
次ã«fontã®å®çŸ©ã§ãããããã¯åã«ã¿ãã«ã§ãã©ã³ããæåãµã€ãºã倧æåãšæå®ããŠããã ãã§ãã
tk.Label()颿°ã§GUIã®ããŒãã§ãããã©ãã«ããšåŒã°ããŠããWidgetãäœæããŸããååä»ãåŒæ°ã䜿ã£ãŠäœãããŒãã®è©³çްããªãã·ã§ã³ãšããŠæå®ããŠããŸãããä»åã¯è¡šç€ºããæååã "Hello Tkinter" ãšãããã©ã³ãã¯å®çŸ©ãããã®ãèæ¯è²(BackGround)ãèµ€ãšããŠããŸãã
ãããŠãäœæãããã©ãã«ã®pack()ãšåŒã°ããŠããã¡ãœããã§ label ãé 眮ããmainloop()ã¡ãœããã§GUIã衚瀺ãããšããæµãã«ãªããŸãã
ä»åã¯ã©ãã«ã²ãšã€ã ãã衚瀺ããã®ã§æ¯èŒçç°¡åã§ããããè€æ°ã®ãŠã£ãžã§ãããšåŒã°ããŠããGUIããŒãããŸãšããã¢ããªã±ãŒã·ã§ã³ãäœãå Žåã¯ããã¡ãã£ãšè€éã«ãªã£ãŠããŸãã
è€æ°ã®Widgetã®å©çš
å çšã¯ã©ãã«ã²ãšã€ã ãã®åçŽãªããŒãæ§æã ã£ãã®ã§ãä»åã¯ããå°ãè€éãªãã®ãäœã£ãŠã¿ãŸãããšã¯ãã£ãŠãåçŽã§ã以äžã®ãããª2ã€ã®ã©ãã«ã衚瀺ããã ãã®ã¢ããªã±ãŒã·ã§ã³ã§ãã
ãããå®çŸããããã«ã¯Frameã䜿ãã®ãç°¡åã§ããFrameã¯ãã®äžã«Widgetãè€æ°æã€ããšãã§ããããããã©ã®ããã«è¡šç€ºãããã管çããŠãããŸãããŸãããŸãã¯ç°¡åãªã®ã§ã³ãŒããèŠãŠã¿ãŸããããã
import Tkinter as tk
frame = tk.Frame()
font=("Helevetica", 32, "bold")
label1 = tk.Label(frame, text="Hello Tk", font=font, bg="red")
label2 = tk.Label(frame, text="Hello Python", font=font, bg="blue")
label1.pack()
label2.pack()
frame.pack()
frame.mainloop()
äžèšã®ã³ãŒãã§æ°ãã€ããŠãããããã®ã¯ããŸãtk.Frame()颿°ã«ããFrameã®ã€ã³ã¹ã¿ã³ã¹ãäœã£ãŠãããšããã§ãã
ãããŠæ¬¡ã«ãå ã»ã©ãšåãããã«tk.Label()颿°ã§ã©ãã«ãäœã£ãŠããã®ã§ããã ãã®ç¬¬äžåŒæ°ã«èŠªãšãªãFrameãäžããŠããŸãããã®ããã«ããããšã§æ°ããäœãããã©ãã«ã¯å çšã®Frameã®äžã«æ ŒçŽãããŸããèŠããã«ã©ãã«ãFrameã®åèŠçŽ ãšãªã£ããšããããšã§ãã
ãããŠãã©ãã«ãFrameãšããããã«å åŽããé ã«packã¡ãœãããåŒã³åºããŠãããæåŸã«äžçªå€åŽã®Frameã«å¯ŸããŠmainloop ãåŒã³åºããŸããç°¡åã§ããã
GUIã®ãã¬ãŒã ã¯ãŒã¯ã«ããããã®ããŒãã®èŠªåé¢ä¿ã®æå®æ¹æ³ã¯å€ãã£ãŠããŸããä»åã¯åã«èŠªãæå®ããŠããŸãããã©ã¡ãããšãããšèŠªã«å¯Ÿã㊠"芪ã®ããŒã.addChild(äžã®ããŒã)" ãšãããããªåœ¢ã§æå®ããããšã®ã»ããäžè¬çãããããŸãããåºæ¬ãšãªãææ³ã¯ããã»ã©å€ãããªãã®ã§ããã¬ãŒã ã¯ãŒã¯ã®æµåã«åãããŠãã ããã
Frameã®è¡šç€ºãªãã·ã§ã³
å ã»ã©ã®ãã¬ãŒã ã§ã®è¡šç€ºã¯ã¡ãã£ãšéã ã£ãã®ã§ããªãã·ã§ã³ãä»ããŠããå°ãäžå¯§ã«è¡šç€ºããŠã¿ãŸãããªãã·ã§ã³ã¯packã¡ãœããã®äžã§ãã©ã®ããã«è¡šç€ºãããããæå®ã§ããŸããããšãã°ä»¥äžã®ãããªãã®ããããŸãã
åºæ¬çã«Frameã®äžã«ã瞊ã«äžŠã¹ããããæšªã«äžŠã¹ããããæå®ããããšã¯çްãã調æŽããããšããèãæ¹ã§ãããšæããŸããä»åã¯å²æããŠããŸãããäžã«æ ŒçŽããWidgetéã®ã¹ããŒã¹ãšãã£ãããšã調æŽã§ããŸãã
Frameã®å ¥ãåæ§é
è€éãªWidgetã®é 眮ããããå Žåã¯ãFrameã®äžã«Frameãå ¥ãããšããå ¥ãåæ§é ã«ããŸããããšãã°ä»¥äžã®ãããªé 眮ã«ããããšããŸãããã
ããã¯æ¬¡ã®ããã«ããã°å€§äžå€«ã§ãã
import Tkinter as tk
frame1 = tk.Frame()
# Child1
frame2 = tk.Frame(frame1)
font=("Helevetica", 32, "bold")
label1 = tk.Label(frame2, text="Hello Tk", font=font, bg="red")
label2 = tk.Label(frame2, text="Hello Python", font=font, bg="blue")
label1.pack(side=tk.LEFT)
label2.pack(side=tk.LEFT)
frame2.pack()
# Child2
label3 = tk.Label(frame1, text="Hello Wodld", font=font, bg="green")
label3.pack(fill=tk.X)
frame1.pack()
frame1.mainloop()
泚ç®ããŠæ¬²ããã®ã¯frame2ã®èŠªã«frame1ãæå®ãããŠããããšã§ããframe2ã®äžã«ã¯2ã€ã®ã©ãã«ãå ¥ã£ãŠããŸãããããã¯frame1ããèŠããšframe2ãšããã²ãšã€ã®èŠçŽ ã«éããŸããããããŠlabel3ã¯ãframe1ã«ãšã£ãŠframe2ãšåããèªåã®åäŸãšãªããŸããã€ãŸãframe1ã«ãšã£ãŠã¯label1,2ã¯å«ã§ãlabel3ã¯åäŸã«ãªããŸãã
誰ã誰ã®èŠªã§ãäžããå€ã«é ã«packããŠãããšããããšã«æ³šæãæãã°ããã»ã©é£ãããªãã§ããã
Widgetã®ç¶æ¿
ä»ãŸã§å©çšããŠããGUIã®ããŒãã¯FrameãšLabelã ãã§ããããå®éã«ã¯ãã¿ã³ãããã¹ãããã¯ã¹ãªã©ãããŸããŸãªãã®ãååšããŠããŸãããã ãããèããŠãã ããããã¿ã³ãã©ãã«ã«ã¯ããããå ±éãã圹å²ã§ããããã¬ãŒã ã«æ ŒçŽå¯èœããç»é¢ã«è¡šç€ºãããããã¯ãªãã¯ãªã©ã®ã€ãã³ãåŠçãå¯èœããšãã£ãå ±éããç¹æ§ããããŸãã
ãããã®å ±éããç¹æ§ãè€æ°ã®ã¯ã©ã¹ã§å®çŸããå¿ èŠãããå Žåã¯ãååã話ãããããã«ãç¶æ¿ãã䟿å©ã§ããGUIã¯ã³ã³ããžã·ã§ã³ããç¶æ¿ãããã¹ãå Žé¢ã§ãã
ããšãã°Tkinterãšããããããäžè¬çãªGUIã®ã©ã€ãã©ãªã§ã¯ã以äžã®ããã«ã©ãã«ããã¿ã³ãšãã£ãããŒãã¯åºæ¬ãšãªãWidgetããç¶æ¿ãããå Žåãå€ãã§ãã
ããããããšã§åºæ¬æ©èœã¯Widgetã«æèŒãããã®å·®åã®ã¿åã¯ã©ã¹ã§ãããã¿ã³ãã©ãã«ã§å®è£ ããã°æ©èœãå®çŸã§ããŸãããã®åºæ¬ã«ãŒã«ã¯èªåã§GUIã®ããŒããæ°ããäœãéãããŠã¯ãŸããŸãã
確èªã®ããã«ç°¡åãªGUIã®ããŒããäœã£ãŠã¿ãŸããåé ã§ã話ããã«ãŠã³ã¿ãäœããŸãã
ãããå®è£ ããå Žåãå¥ã«ç¶æ¿ã䜿ããªãã§ãå®çŸå¯èœã§ããããšãã°ä»¥äžã®ãããªãã®ãããã§ãã
import Tkinter as tk
class Counter:
def __init__(self, value):
self.value = value
frame = tk.Frame()
font = ("Helevetica", 32, "bold")
self.label = tk.Label(frame,
text=self.getText(),
font=font, bg="red")
button = tk.Button(frame, text="Click",
command=self.clicked)
self.label.pack()
button.pack()
frame.pack()
frame.mainloop()
def clicked(self):
self.value += 1
self.label.configure(text=self.getText())
def getText(self):
return "Count:{}".format(self.value)
c = Counter(0)
ã³ãŒããèªãã§ã¿ããšããããŸãããã¯ã©ã¹Counterã¯ãç¹ã«Tkinterã®ããŒããç¶æ¿ããŠãããããã®åæåã®éã«Frameãäœãããã®äžã«ã©ãã«ãšãã¿ã³ãæ ŒçŽããŠè¡šç€ºãããšããä»çµã¿ã«ãªã£ãŠããŸãããªãããã¿ã³ãæŒããããšãã®ã¢ã¯ã·ã§ã³ã¯ãç»é²ãããã¡ãœãããåŒã³åºããããšãããã®ã«ãªã£ãŠããŸãã
äžæ¹ãåãããšãç¶æ¿ã䜿ã£ãŠå®çŸããããšãã§ããŸãããã¡ãã®ã»ããäžè¬ç㪠GUIã¢ããªã®äœãæ¹ã ãšæããŸãã
import Tkinter as tk
class Counter(tk.Frame):
def init(self, master=None, value=0):
self.value = value
tk.Frame.__init__(self, master)
font = ("Helevetica", 32, "bold")
self.label = tk.Label(self,
text=self.getText(),
font=font, bg="red")
self.button = tk.Button(self, text="Click",
command=self.clicked)
self.label.pack()
self.button.pack()
def clicked(self):
self.value += 1
self.label.configure(text=self.getText())
def getText(self):
return "Count:{}".format(self.value)
f = tk.Frame()
c1 = Counter(value=0, master=f)
c2 = Counter(value=5, master=f)
c1.pack()
c2.pack()
f.pack()
f.mainloop()
ã¡ãã£ãšã³ãŒããè€éã«ãªã£ãŠããŸãããCounterã¯tk.Frameãç¶æ¿ããŠäœããèªåèªèº«ã®äžã«ã©ãã«ãšãã¿ã³ãé 眮ãããšããæ§æã«ãªã£ãŠããŸãã
ãŸããç¶æ¿ã䜿ããªãã³ãŒããšäœ¿ãã³ãŒãã®æåŸã®éšåãèŠæ¯ã¹ãŠããããšããããŸãããç¶æ¿ãããªãå Žåã¯ãããŸã§ãã俺ã«ãŒã«ãã§è¡šç€ºããããŠããã®ã«å¯ŸããŠãç¶æ¿ã䜿ãå Žåã¯ã»ãã®tkã®ãŠã£ãžã§ããã®GUIããŒããšã»ãšãã©éããªãå©çšã§ããŠããŸããã»ãã®GUIããŒãã®ããã«äœ¿ããã®ã§ãä»åã¯Frameã®äžã«å ¥ããŠ2ã€å©çšãããšããããšããã£ãŠããŸããããã¯ç¶æ¿ã䜿ããªãã³ãŒãã§ã¯ã俺ã«ãŒã«ãã§ä»çµã¿ãäœããªããšå®çŸã§ããŸãããããããªã³ãŒãã¯æ±çšæ§ãäœããŠäœ¿ãã«ããã§ãã
GUIã®ã¢ããªã±ãŒã·ã§ã³ã¯ããŒããšããŒããè€éã«çµ¡ã¿åããããå€§èŠæš¡ãªãã®ãäœããšãªããšé£æåºŠãäžæ°ã«å¢ããŸãããã ããã®ãããªåé¡ãããã«ä¹ãè¶ããããšããããšã«åèŠå «èŠããèªåã§ããããèããã¢ã€ãã£ã¢ã詊ãããå 人ã®ç¥æµãåãããããŠè§£æ±ºããŠãããšããããšãç¹°ãè¿ãããšã§ããã°ã©ããšããŠã®ã¬ãã«ãäžãã£ãŠãããã®ã§ã¯ãªãããšæããŸãã
ä»åã§ãªããžã§ã¯ãæåç·šã¯çµããã§ãããŸãæŒç¿ã®è§£èª¬ãšåçãããã³ã³ã©ã ãæãã ããã§ãä»ãŸã§ã®è©±ã§ã«ããŒã§ããªãã£ãäŸå€åŠçãªã©ã®è©±é¡ãæ±ã£ãŠãããããšæããŸãã
å·çè
玹ä»äŒè€è£äž(ITO Yuichi)ã·ã¹ã³ã·ã¹ãã ãºã§ã®æ¥åãšå€§åŠã§ã®ç 究掻åã§ã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯ã«6幎é¢ãããå°éã¯L2/L3 Switching ãšããŒã¿ã»ã³ã¿ãŒé¢é£æè¡ããã³SDNãTACãšããŠã·ã¹ã³é¡§å®¢ã®ãã¯ãã«ã«ãµããŒãæ¥åã«åŸäºã瀟å åãã®ãœãããŠã§ã¢é¢é£ã®ãã¬ãŒãã³ã°ããã³ããŒã¿ã»ã³ã¿ãšSDNé¢ä¿ã®å€éšè¬æŒãªã©ãè¡ãã ããšããšä»®æ³ãããã¯ãŒã¯é¢é£æè¡ã®ç ç©¶éçºã«åŸäºããŠããããšãããããããã¯ãŒã¯ã ãã§ãªãããã°ã©ãã³ã°ãLinuxé¢é£æè¡ã«ã粟éãCisco瀟å å€åãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŒã«ã®éçºããè¶£å³ã§é³å£°åæåŠçã®ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãéçºã Cisco CCIE R&S, Red Hat Certified Engineer, Oracle Java Gold,2009幎床 IPA æªèžãããžã§ã¯ãæ¡æ 詳现(è±èª)ã¯ãã¡ã |
|---|








