PySimpleGUIとPyInstallerでJSON整形ツールを構築する

JSON文字列を整形するシンプルなデスクトップアプリケーションを、PythonのPySimpleGUIとPyInstallerを用いて作成する方法を紹介します。このツールは、標準的なダブルクォート形式だけでなく、シングルクォートを含む非標準JSONも処理可能です。

まず、入力された文字列を解析し、適切に整形するためのコアロジックを実装します:

import json

def format_json(input_str):
    try:
        # 標準JSON(ダブルクォート)をパース
        parsed = json.loads(input_str)
    except json.JSONDecodeError:
        try:
            # 非標準JSON(シングルクォートなど)をevalで処理
            parsed = eval(input_str)
        except Exception:
            raise ValueError("無効なJSON形式です")

    # 整形済みJSONを生成(日本語対応、インデント4)
    formatted = json.dumps(parsed, indent=4, ensure_ascii=False)
    return formatted, "black"

次に、GUIインターフェースをPySimpleGUIで構築します:

import PySimpleGUI as sg
from json_formatter import format_json  # 上記関数を別モジュールとして分離

def launch_formatter():
    layout = [
        [sg.Text("入力JSON:", font=("Meiryo", 12))],
        [sg.Multiline(key="-INPUT-", size=(90, 8), font=("Consolas", 10))],
        [sg.Button("整形実行", size=(15, 1), bind_return_key=True)],
        [sg.Text("整形結果:", font=("Meiryo", 12))],
        [sg.Multiline(key="-OUTPUT-", size=(90, 12), font=("Consolas", 10), text_color="black")]
    ]

    window = sg.Window("JSON整形ツール", layout, finalize=True)

    while True:
        event, values = window.read()
        if event in (sg.WIN_CLOSED, "キャンセル"):
            break
        if event == "整形実行":
            raw_input = values["-INPUT-"].strip()
            if not raw_input:
                window["-OUTPUT-"].update("入力が空です", text_color="red")
                continue

            try:
                result, color = format_json(raw_input)
                window["-OUTPUT-"].update(result, text_color=color)
            except Exception as e:
                window["-OUTPUT-"].update(f"エラー: {str(e)}", text_color="red")

    window.close()

if __name__ == "__main__":
    launch_formatter()

完成したスクリプトをスタンドアロンのWindows実行ファイルに変換するには、以下のPyInstallerコマンドを実行します:

pyinstaller --onefile --windowed --name "JSONFormatter" JSON_format_tool.py

これにより、依存ライブラリを内包した単一の実行ファイルが生成され、Python環境を持たないユーザーでも利用可能になります。

タグ: Python PySimpleGUI PyInstaller JSON

7月6日 16:30 投稿