見出し画像

tkinter と openpyxl

tkinterを使用し、エントリーボックスやコンボボックスに入力された値を、実行ボタンが押された時に、Excelの指定したシートのセル番地へ転記する。

import tkinter as tk
import tkinter.ttk as ttk
import openpyxl

class Application(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        # ウィンドウタイトルを設定[.title('タイトル')]
        self.title("Tkinter x excel")

        # ウィンドウ(外枠)の大きさを設定[.geometry('数値x数値')]*xは小文字エックス
        self.geometry("400x300")

        # 行の高さを設定 行番号:0
        self.grid_rowconfigure(0, weight=1) 
        # 列の高さを設定 列番号:0
        self.grid_columnconfigure(0, weight=1)
 
        # フレーム作成
        self.main_frame = tk.Frame()
        self.main_frame.grid(row=0, column=0, sticky="nsew")


        # エントリーボックス作成
        self.id_box = tk.Entry(self.main_frame, width=10)
        self.id_box.place(x=50, y=50)
        tk.Label(self.main_frame, text='ID番号').place(x=40, y=20)

        # コンボボックス作成
        list = ['赤', '青', '黄']
        self.color = ttk.Combobox(self.main_frame, values=list)
        self.color.place(x=50, y=120)
        tk.Label(self.main_frame, text='色').place(x=40, y=90)

        # 実行ボタン作成
        tk.Button(self.main_frame, text='実行', command=self.save_data).place(x=50, y=200)

    # 実行ボタンが押された時の動作
    def save_data(self):
        # Excelファイル読込み
        wb = openpyxl.load_workbook('Excelブック.xlsx')
        # シート読込み
        ws = wb['シート名']
        # セル番地「A1」にエントリーボックスに入力された値を転記
        ws['A1'] = self.id_box.get()
        # セル番地「B1」にコンボボックスに入力された値を転記
        ws['B1'] = self.color.get()
        # Excelファイル保存
        wb.save('Excelブック.xlsx')


if __name__ == "__main__":
    app = Application()
    app.mainloop()

いいなと思ったら応援しよう!