Python | input()

Python
スポンサーリンク

ここでは、「メモ付き電卓(GUI版)」を
tkinterPySimpleGUI両方のサンプルで紹介します。


① tkinter版:メモ付き電卓

import tkinter as tk
from tkinter import messagebox
import datetime

HISTORY_FILE = "calc_history.txt"

def save_history(expression, result):
    """履歴をファイルに追記"""
    with open(HISTORY_FILE, "a", encoding="utf-8") as f:
        time_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        f.write(f"[{time_str}] {expression} = {result}\n")

def calculate():
    expr = entry.get()
    if not expr.strip():
        return

    try:
        result = eval(expr)
        result_label.config(text=f"結果:{result}")
        save_history(expr, result)
        entry.delete(0, tk.END)
    except Exception as e:
        messagebox.showerror("エラー", f"無効な式です:{e}")

# --- GUI構築 ---
root = tk.Tk()
root.title("メモ付き電卓(tkinter版)")
root.geometry("320x200")

frame = tk.Frame(root, padx=10, pady=10)
frame.pack(fill="both", expand=True)

tk.Label(frame, text="数式を入力(例:2+3*4)").pack()
entry = tk.Entry(frame, font=("Arial", 14))
entry.pack(fill="x", pady=5)

tk.Button(frame, text="計算", command=calculate).pack(pady=5)
result_label = tk.Label(frame, text="結果:", font=("Arial", 14))
result_label.pack(pady=5)

tk.Label(frame, text="履歴は calc_history.txt に保存されます。", fg="gray").pack(side="bottom")

root.mainloop()
Python

🖥️ 実行すると…

  • シンプルなウィンドウが開き、数式を入力して「計算」を押すと結果を表示。
  • calc_history.txt に日時付きで記録されます。
[2025-11-06 08:05:12] 2+3*4 = 14

② PySimpleGUI版:メモ付き電卓

より見やすく・短く書ける GUI ライブラリ版です👇

import PySimpleGUI as sg
import datetime

HISTORY_FILE = "calc_history.txt"

def save_history(expression, result):
    """履歴をファイルに追記"""
    with open(HISTORY_FILE, "a", encoding="utf-8") as f:
        time_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        f.write(f"[{time_str}] {expression} = {result}\n")

# --- GUI レイアウト ---
layout = [
    [sg.Text("数式を入力してください(例:2+3*4)")],
    [sg.Input(key="expr")],
    [sg.Button("計算"), sg.Button("終了")],
    [sg.Text("結果:", key="result", size=(30, 1), text_color="blue")],
    [sg.Text("履歴は calc_history.txt に保存されます。", text_color="gray")]
]

window = sg.Window("メモ付き電卓(PySimpleGUI版)", layout)

while True:
    event, values = window.read()
    if event in (sg.WINDOW_CLOSED, "終了"):
        break

    if event == "計算":
        expr = values["expr"]
        if not expr.strip():
            continue
        try:
            result = eval(expr)
            window["result"].update(f"結果:{result}")
            save_history(expr, result)
            window["expr"].update("")  # 入力欄をクリア
        except Exception as e:
            sg.popup_error(f"エラー: {e}")

window.close()
Python

✅ PySimpleGUIの特長

特長説明
コードが短く、初心者にも読みやすい
ウィンドウレイアウトを「リスト」で書ける
sg.popup()などの便利機能多数
クロスプラットフォーム対応(Windows/macOS/Linux)

どちらを選ぶ?

ライブラリ向いている人
tkinter標準ライブラリで完結したい人(追加インストール不要)
PySimpleGUIコードを簡潔に書きたい人、初心者向けGUI練習に最適
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました