Pythonã®ææ³ã¯ã ãã¶æžããããã«ãªã£ãããã©ãããã£ãšç®ã«èŠããŠåããã®ãäœã£ãŠã¿ããïŒããšæããŠããŸãããïŒ ãããªãšãã«æé«ã®å ¥å£ã«ãªãã®ãããã¹ã¯ãããã¢ããªäœãã§ãâš
ãŠã£ã³ããŠãç«ã¡äžããããã¿ã³ãæŒãã°åŠçãèµ°ããExcelã«ããŒã¿ãä¿åãããââãããªã¢ããªããPythonæšæºã©ã€ãã©ãªãTkinterãã ãã§äœããŠããŸããŸãã远å ã€ã³ã¹ããŒã«äžèŠãã³ããã§ãåãããæè»œãã§ãåå¿è ããäžçŽè ãžçŸœã°ããæé«ã®äžæ©ã«ãªããŸããð
ãã¹ã¯ãããã¢ããªãšã¯ããã®åã®ãšããããœã³ã³ã®ãã¹ã¯ãããäžã§åãã¢ããªã®ããšãæ®æ®µãã¢ããªããšèããšã¹ããã¢ããªãæãæµ®ãã¹ãã¡ã§ãããã¹ããã¢ããªã¯ããœã³ã³ã«ã¯ã€ã³ã¹ããŒã«ã§ããŸãããéã«ä»åäœããã¹ã¯ãããã¢ããªã¯ãã¹ãããã¿ãã¬ããã§ã¯åãããããªãã®PCã®äžã ãã§åãå°çšããŒã«ã«ãªããŸãð»
䜿ãã©ã€ãã©ãªã¯Pythonæšæºã®Tkinterãã€ã³ã¹ããŒã«äžèŠã§ãimportããã ãã§ããå§ããããã®ãå¬ãããã€ã³ãã§ããExcelæäœã©ã€ãã©ãªïŒopenpyxlïŒãšçµã¿åãããã°ãå ¥åããããŒã¿ãExcelã«ä¿åããâã¡ãããšäœ¿ããâã¢ããªãäœããŸãð
Tkinterã§ãŸãèŠãããã®ããTkãªããžã§ã¯ãã§ãããããã¢ããªã®äžçªå€åŽã衚瀺ãããå šäœã®ãŠã£ã³ããŠã«ãªããŸãã
import tkinter
root = tkinter.Tk()
root.title("ãµãã¢ããª")
root.geometry("400x300")
root.mainloop()
ãã£ãããã ãã®ã³ãŒãã§ãã¿ã€ãã«ããŒã«ããµãã¢ããªããšæžããã400Ã300pxã®çã£çœãªãŠã£ã³ããŠãç«ã¡äžãããŸãð
tkinter.Tk()ïŒã¢ããªã®åå°ïŒãããã¬ãã«ãŠã£ãžã§ããïŒãäœætitle()ïŒãŠã£ã³ããŠäžéšã«è¡šç€ºããã¿ã€ãã«ãèšå®geometry("暪x瞊")ïŒèµ·åæã®ç»é¢ãµã€ãºããã¯ã»ã«æå®mainloop()ïŒã¢ããªãèµ·åãããåŒã³åºãïŒããããªããšéããŠããŸãïŒããŠã£ãžã§ããããšã¯ããŠã£ã³ããŠã»ãã¿ã³ã»ã¡ãã¥ãŒãšãã£ãç»é¢ã«è¡šç€ºãããéšåã®ç·ç§°ãTkinterã¯éšåã®çµã¿åããã§ã¢ããªãçµã¿ç«ãŠãŠããçºæ³ã§ãð§©
次ã«ãåå°ã®äžã«å°ããªã¢ããªæ¬äœãèŒããŠãããŸããTkinterã®Frameã¯ã©ã¹ãç¶æ¿ããŠãèªåã®Applicationã¯ã©ã¹ãäœãã®ãå®çªã®ã¹ã¿ã€ã«ã§ãã
class Application(tkinter.Frame):
def __init__(self, root):
super().__init__(root, width=400, height=300,
borderwidth=4, relief="groove")
self.root = root
self.pack()
self.pack_propagate(0)
self.create_widgets()
def create_widgets(self):
# ããã«ãã¿ã³ãããã¹ãããã¯ã¹ãæžããŠãã
pass
å°ãé£ããèŠãããããããŸããããããã¯ã»ãŒãã³ãã¬ãŒããšããŠã³ããã§OKãéèŠãªã®ã¯ãåå°ã®rootãåŒæ°ã§åãåããã€ã³ã¹ã¿ã³ã¹å€æ°ã«ä¿æããŠãããããšã ãã§ããããã§ã¯ã©ã¹å ã®ã©ã®ã¡ãœãããããrootã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãð
ãŸãã¯ã¢ããªãçµäºããããã¿ã³ããäœã£ãŠã¿ãŸãããããŠã£ãžã§ããã®äœæã¯create_widgetsã¡ãœããã«ãŸãšããŠãããšãåŸã§èŠè¿ãããšãã«åããããããªããŸãã
def create_widgets(self):
self.btn_close = tkinter.Button(self)
self.btn_close["text"] = "éãã"
self.btn_close["command"] = self.root.destroy
self.btn_close.pack(side="bottom")
textïŒãã¿ã³ã«è¡šç€ºããæåcommandïŒæŒããããšãã«å®è¡ããåŠçïŒããã§ã¯root.destroyã§ã¢ããªçµäºïŒpack(side="bottom")ïŒç»é¢äžéšã«é
眮å®è¡ãããšããã¬ãŒã ã®äžã«ãéããããã¿ã³ãçŸããã¯ãªãã¯ãããšã¢ããªãçµäºããŸãããã¿ã³ãæŒã=颿°ãåŒã³åºããšããã·ã³ãã«ãªä»çµã¿ãèŠããã°ãå¿çšã¯ç¡é倧ã§ãð¯
次ã«ããŠãŒã¶ãŒããæåãåãåã£ãŠåŠçããä»çµã¿ãè¶³ããŠã¿ãŸããããããã¹ãããã¯ã¹ã¯tkinter.Entryã¯ã©ã¹ã§äœæããŸãã
def create_widgets(self):
self.text_box = tkinter.Entry(self, width=10)
self.text_box.pack()
self.btn_run = tkinter.Button(self, text="å®è¡",
command=self.input_handler)
self.btn_run.pack()
self.message = tkinter.Message(self)
self.message.pack()
self.btn_close = tkinter.Button(self, text="éãã",
command=self.root.destroy)
self.btn_close.pack(side="bottom")
def input_handler(self):
text = self.text_box.get()
self.message["text"] = text + "!"
ããã¹ãããã¯ã¹ã«äœãå ¥åããŠãå®è¡ããã¿ã³ãæŒããšãå ¥åæååã«ã!ããä»ããŠç»é¢äžã«è¡šç€ºãããŸãð¬ å ¥åâåŠçâåºåãšãããã¢ããªã®åºæ¬ãµã€ã¯ã«ãããã§å®æã§ãã
ãããŸã§ã®ã¢ããªã¯éãããšããŒã¿ãæ¶ããŠããŸããæ®çºåããé»åã¢ããªãªãããã§OKã§ãããã¹ã±ãžã¥ãŒã«ã¢ããªãã¡ã¢ã¢ããªã§ã¯å ¥åããããŒã¿ãæ°žç¶åãããã§ããããæãæè»œãªæ¹æ³ããExcelãã¡ã€ã«ã«ããŒã¿ãæžã蟌ãããæ¹ã§ãð
import tkinter
from tkinter import filedialog
import pathlib
import openpyxl
def save_data(self):
text = self.text_box.get()
file_path = filedialog.askopenfilename(
initialdir=pathlib.Path().cwd())
wb = openpyxl.load_workbook(file_path)
ws = wb.worksheets[0]
ws["B1"].value = text
wb.save(file_path)
self.message["text"] = "ä¿åå®äº"
åŠçã®æµãã远ã£ãŠã¿ãŸãããã
filedialog.askopenfilenameã§Excelãã¡ã€ã«éžæãã€ã¢ãã°ã衚瀺openpyxl.load_workbookã§éžæããããã¡ã€ã«ãéãwb.saveã§ä¿åããç»é¢ã«ãä¿åå®äºãã衚瀺å察ã«ãèªã¿èŸŒã¿ãã¿ã³ããçšæããã°ãä¿åããŠãããExcelã®å€ãã¢ããªã®ç»é¢ã«åŒã³æ»ãããšãã§ããŸããã¢ããªãäžåºŠéããŠãããŸãèµ·åãããšãã«ååã®ããŒã¿ã埩掻ããââãããæ°žç¶åã®åšåã§ãâš
Tkinterã«ã¯ä»å䜿ã£ãButtonã»Entryã»Messageã®ã»ãã«ããã©ãã«ã»ãã§ãã¯ããã¯ã¹ã»ã©ãžãªãã¿ã³ã»ãªã¹ãããã¯ã¹ã»ãã£ã³ãã¹ãªã©å€åœ©ãªãŠã£ãžã§ãããæã£ãŠããŸãããTkinter ãŠã£ãžã§ãããã§æ€çŽ¢ãããšäžèЧãåºãŠããã®ã§ãäœãããã¢ããªã«åãããŠããŒããçµã¿åãããã ãã§ãäžçã«äžã€ã ãã®ãªãªãžãã«ã¢ããªã宿ããŸãð ïž
åç»ãšåãããŠæå ã«1åãããšãTkinteråäœã ãã§ãªããPythonã§ã¢ããªãèšèšããåãããã£ãšè²ã¡ãŸããã¬ãã«å¥ã«å³éžããŠã玹ä»ããŸãð
Tkinterã«å ¥ãåæ®µéãšããŠã倿°ã»é¢æ°ã»ã¯ã©ã¹ã»ç¶æ¿ã®çè§£ã¯å¿ é ãå³è§£ãšäŒè©±ã§é²ãå ¥éæžãªããã€ãŸãããã€ã³ããäžå¯§ã«æœ°ããŸãã
ã¯ã©ã¹ã®ç¶æ¿ãäŸå€åŠçãšãã£ããã¢ããªäœãã«å¿
èŠãªåºç€ããç¶²çŸ
ãsuper().__init__()ããªãå¿
èŠãªã®ããå°ç¶ãã§çè§£ã§ããŸãã
Excelèªååããã¡ã€ã«æäœãGUIãªã©ãå®çšã¹ã¯ãªããã®äœãæ¹ããæºèŒãä»åã®ã¢ããªã®å»¶é·ç·ã§ãèªååããŒã«ãéç£ããããªãäžåã§ãâïž
ã¯ã©ã¹èšèšããã³ã¬ãŒã¿ãã³ã³ããã¹ããããŒãžã£ãªã©ãPythonãããã¢ããªèšèšãã®äœæ³ãåŠã¹ãå®çªãTkinterã¢ããªã®ã³ãŒãããã£ãšæŽç·ŽãããŸãã
ã¢ããªã倧ãããªã£ãŠãããšãã«å¿ é ãšãªããå£ãã«ããèšèšãã®ããŠããŠãè©°ãŸã£ãäžåãåãã³ãã»ã¢ãžã¥ãŒã«åå²ã»ãã¹ãã®èãæ¹ãŸã§èº«ã«ã€ããŸãð¡ïž
ããããäžèŠã§ããTkinterã¯Pythonæšæºã©ã€ãã©ãªãªã®ã§ãPythonããå
¥ã£ãŠããã°import tkinterããã ãã§äœ¿ããŸããExcel飿ºã§äœ¿ãopenpyxlã ãã¯pip install openpyxlãå¿
èŠã§ãðŠ
Tkinterã¯æšæºã©ã€ãã©ãªã§æè»œãèŠãç®ã¯ã·ã³ãã«ãPyQtã¯ãªããã§æ¬æ ŒçãªUIãäœããåé¢ã©ã€ã»ã³ã¹ã»åŠç¿ã³ã¹ããé«ããKivyã¯ã¢ãã€ã«å¯Ÿå¿ã«åŒ·ã¿ãããŸãåããã®ãäœãããããªãTkinterãåçšã¬ãã«ãç®æããªãPyQtãšããæ£²ã¿åãã§ãã
ã§ããŸããå°ããªã¢ããªãªã颿°ã ãã§ãæžããŸãããã ããã¿ã³ã®æ°ãå¢ãããããŠã£ãžã§ããéã§ããŒã¿ãããåãããããã«ãªããšãã¯ã©ã¹ã«ãŸãšããæ¹ãå§åçã«ç®¡çããããã®ã§ããããã§ããä»åã®ãã³ãã¬ãŒãããã®ãŸãŸäœ¿ãåãã®ãè¿éã§ãã
ããã¹ããã¡ã€ã«ãCSVãJSONãSQLiteïŒæšæºã©ã€ãã©ãªïŒãªã©ãå®çªã§ããExcelã¯ã人éãçŽæ¥éããŠç¢ºèªã§ãããã®ãã¡ãªãããããã°ã©ã å士ã§ããåãããã ããªãJSONãSQLiteã®æ¹ãæ±ããããå Žé¢ããããŸããçšéã§äœ¿ãåããŸãããðïž
Tkinterã®æ¡åŒµçã§ããttkïŒthemed TkinterïŒã䜿ããšãOSãã€ãã£ã颚ã®èŠãç®ã«åãæ¿ããããŸããããã«æ¬æ Œçãªãã¶ã€ã³ãæ±ãããªããcustomtkinterãªã©ã®ãµãŒãããŒãã£ã©ã€ãã©ãªãæ€èšããŠã¿ãŠãã ããâš
Tkinterã¯æŽŸæãªã©ã€ãã©ãªã§ã¯ãããŸãããããæãã€ããããŒã«ããµã¯ããšåœ¢ã«ãããã®ã«æé©ãªçžæ£ã§ããä»å玹ä»ããæµãââãŠã£ã³ããŠãäœã â ãã¿ã³ãšããã¹ãããã¯ã¹ã眮ã â åŠçã颿°åãã â Excelã«ããŒã¿ãä¿åããââããã¹ã¿ãŒããã°ãæ¥åã®å°ããªæéãè§£æ¶ãããªãªãžãã«ã¢ããªã次ã ãšäœããããã«ãªããŸãð ïž
ãŸãã¯ã³ããã§ãæ§ããŸãããåããã®ãç®ã®åã§èŠããšãã³ãŒãã®çè§£ãäžæ°ã«é²ã¿ãŸããæ°ã¥ãããšããããªãã¯ãPythonã§ã¢ããªãäœãã人ãã«å€ãã£ãŠããã¯ãã§ãð ãããèªåã ãã®ã¢ããªäœããå§ããŸãããïŒ
â ïž Windowsã»ãã¥ãªã…
ð§ çªç¶ã®æçš¿ã«ãã¡ã³éšç¶ïŒã©…
ð§© ããºã«ãè§£ãå¿«æãã³ãŒãã§…
âš ããã°ã©ã ã®åäœã軜ããã…
ð ãµãŒããŒãµã€ãéçºã®äžçãž…
âš é¢åãªWebäœæ¥ãèªååã…