生産性を爆上げ!Pythonのtkinterで作る効率化アプリの開発テクニック

tkinter

こんにちは、すのくろです。

今回はpythonのtkinterを活用して、データ分析でよくある動作をGUI上でわかりやすく汎用的に行う簡単なアプリを作成したので、紹介したいと思います。

今回は、好きなフォルダ内のcsvファイルを画面上で指定して、エクセルファイルに変換するアプリを簡単に作成してみました。

本記事を読むと分かること

・tkinterがどんなものかイメージをつかめる

・tkinterを使った効率化アプリの作成が可能になる

それでは詳細に移ります!

tkinterとは?

TkinterはPythonの標準的なGUI(グラフィカルユーザーインターフェース)ライブラリであり、自動化や効率化のためにも使用することができます。

tkinter --- Python interface to Tcl/Tk
ソースコード: Lib/tkinter/__init__.py tkinter パッケージ ("Tk インターフェース") は、 Tcl/Tk GUI ツールキットに対する標準の Python インターフェースです。 Tk と tkinter は macOS を含むほとんどの Unix プラットフォームの他、 Wind...

tkinterを利用した自動化・効率化の例

tkinterを使って自動化する例としては下記のようなものがあります。

  1. ファイルのバッチ処理: Tkinterを使用して、GUI上でファイルのバッチ処理を実行することができます。例えば、特定のフォルダ内のファイルに対して一括で処理を行うプログラムを作成できます。ユーザーはGUI上でフォルダを選択し、実行ボタンを押すことで処理が開始されるようにすることができます。
  2. ファイルの自動ダウンロード: Tkinterを使用して、特定の条件を満たすファイルを自動的にダウンロードするプログラムを作成できます。ユーザーはGUI上で条件を指定し、ダウンロードを開始すると指定した条件に一致するファイルが自動的にダウンロードされるようになります。
  3. タスクスケジューラの作成: Tkinterを使用して、ユーザーが予定されたタスクを設定し、定期的に実行するスケジューラを作成できます。ユーザーはGUI上でタスクのスケジュールや実行条件を設定し、プログラムがそれに基づいて定期的に処理を実行するようにします。
  4. データのエクスポートとインポート: Tkinterを使用して、データのエクスポートやインポートのためのGUIツールを作成することができます。ユーザーはGUI上でデータの形式や保存場所を指定し、プログラムがそれに基づいてデータのエクスポートやインポートを行います。

tkinterによる効率化アプリの作成

CSVファイルをEXCELファイルに変更するプログラムの作成

今回は、たまに業務でも使うある測定器から吐き出されたcsvファイルを編集するために拡張子を「.csv」から「.xlsx」に好きなように変更するGUIアプリを作成してみました。

サンプルコード

作成したコードは下記です。

import tkinter as tk
from tkinter import filedialog
import pandas as pd

# Tkinterウィンドウの作成
window = tk.Tk()
window.title("CSV to Excel Converter")
window.geometry('500x400')
window.resizable(0, 0)

# ボタンクリック時の処理
def convert():
    # CSVファイルを選択するダイアログを表示
    csv_file_path = filedialog.askopenfilename(filetypes=[("CSV Files", "*.csv")])
    
    # 選択したファイルがCSVファイルでない場合はエラーメッセージを表示して終了
    if not csv_file_path.endswith(".csv"):
        tk.messagebox.showerror("Error", "Please select a CSV file.")
        return
    
    # 変換処理を実行する関数を呼び出す
    convert_csv_to_excel(csv_file_path)

# CSVをExcelに変換する関数
def convert_csv_to_excel(csv_file_path):
    try:
        # CSVファイルをpandasのDataFrameとして読み込む
        df = pd.read_csv(csv_file_path)

        # Excelファイルに変換して保存する
        excel_file_path = csv_file_path.replace(".csv", ".xlsx")

        # xlsxwriterを使用してExcelファイルを作成
        writer = pd.ExcelWriter(excel_file_path, engine='xlsxwriter')
        df.to_excel(writer, index=False, sheet_name='Sheet1')

        # xlsxwriterのオブジェクトを取得
        workbook = writer.book
        worksheet = writer.sheets['Sheet1']

        # セルのフォントをエクセル標準に設定
        default_font = workbook.add_format({'font_name': 'Calibri', 'font_size': 11})

        for col_num, col_letter in enumerate(df.columns):
            # 列の幅を自動調整
            column_width = max(df[col_letter].astype(str).map(len).max(), len(col_letter))
            worksheet.set_column(col_num, col_num, column_width)

            # セルのフォントを設定
            worksheet.write(0, col_num, col_letter, default_font)

        # Excelファイルを保存
        writer.close()

        tk.messagebox.showinfo("Success", "Conversion completed. Excel file saved at: {}".format(excel_file_path))
    except Exception as e:
        tk.messagebox.showerror("Error", "Conversion failed: {}".format(str(e)))

# ボタンを作成
convert_button = tk.Button(window, text="Convert", command=convert)
convert_button.pack(padx=100, pady=30)

# Tkinterウィンドウを実行
window.mainloop()

これを実行すると、下記のウィンドウが表示されます。

このウィンドウの「Convert」ボタンを押すと↓のようになります。

このように、ファイル選択の画面が出てきます。

ここで、好きなフォルダからcsv拡張子のファイルを選択して、「Open」を押します。

そうすると、↓のように、ファイルがcsvからxlsxのエクセルファイルに変換されました。

csvファイルと同じフォルダ内にxlsxファイルができます。

こんな感じでtkinterは使えます。

この考えを応用すると、画像の拡張子変換なども簡単にできますね!

他にも色んなアプリが作れると思います!

まとめ

tkinterを利用して、ある作業をGUI上で行う簡単なアプリの例を紹介しました。

視覚的に色んなファイルを選んだり、好きなことができて汎用的なのでうまく使うとかなり作業の効率化につながると思います。

さらに別の記事では今回作成されたtkinterを使ったプログラムをexeファイルで実行可能にする方法やpython環境がなくても起動できるようにした方法を説明したものがあるので是非こちらもセットで読んでいただけると幸いです。

PyInstallerでPythonを手軽に実行可能ファイルに!手軽にアプリを配布可能!

tkinter以外にも、Pythonは自由度が高く、豊富なライブラリがまだまだ用意されているため、様々なデータ処理に応用することができます!

さらにPythonのスキルを高めて、効率的に業務を行いたい、高度なPythonを中心としたプログラミングをより体系的に学びたいと言う方向けに、おすすめのオンラインスクールを2つ厳選して紹介していますので、こちらもよければご覧ください!

自分も一度体系的にPythonを学んだことで、一気に日々の業務や人生が変わったと感じています!

以上、ここまでお読みいただき、ありがとうございました!

コメント

タイトルとURLをコピーしました